Graal Forums

Graal Forums (https://forums.graalonline.com/forums/index.php)
-   Code Gallery (https://forums.graalonline.com/forums/forumdisplay.php?f=179)
-   -   Floating Text Effect (https://forums.graalonline.com/forums/showthread.php?t=134261397)

fowlplay4 12-25-2010 04:14 AM

Floating Text Effect
 
1 Attachment(s)
It's a fairly simple effect that I recently remade on Zodiac and can be easily integrated into your own systems.

I've attached the effect at the bottom. Just upload it into your ganis folder.

Here's an example implementation:

-Effects_Text

PHP Code:

//#CLIENTSIDE

function onTimeout() {
  
// Check for Floating Text IDs
  
if (this.floating.size() > 0) {
    
// Loop through Floating Text IDs
    
for (temp.imgidthis.floating) {
      
// Check if ID is expired
      
if (timevar2 >= this.floating.(@imgid)) {
        
// Hide Floating Text
        
hideimg(imgid);
        
// Remove Floating Text ID Data and from Array
        
this.floating.(@imgid) = "";
        
this.floating.remove(imgid);
      }
    }
    
// Continue Looping if there's still Floating Text
    
if (this.floating.size() > 0) {
      
setTimer(0.1);
    }
  }
}

function 
onActionClientSide() {
  switch (
params[0]) {
    case 
"playerdmg":
      
showDamage(params[1]);
      break;
    case 
"npcdmg":
      
showNPCDamage(params[1], params[2], params[3]);
      break;
  }
}

public function 
showDamage(dmg) { 
  
// Determine Coordinates 
  
temp.tx player..5 random(-1,1); 
  
temp.ty player.random(-1,1); 
  
// Img ID Counter 
  
this.counter_npc = (this.counter_npc) % 20
  
// Draw Floating Text 
  
showFloatingText(this.counter_npctxtydmg100); 


public function 
showNPCDamage(txtydmg) { 
  
// Img ID Counter 
  
this.counter_npc = (this.counter_npc) % 20
  
// Draw Floating Text 
  
showFloatingText(200 this.counter_npctxtydmg100); 


public function 
showFloatingText(imgidtxtymsgrgbz) { 
  
// Hideimg just in case
  
hideimg(imgid);
  
// Add to Image Tracking Array 
  
if (!(imgid in this.floating)) this.floating.add(imgid); 
  
// Set Time to Hide 
  
this.floating.(@imgid) = timevar2 0.75
  
// Display Text 
  
showani(imgidtxty0"effect_floatingtext"msgrgbz); 
  
// Timeout 
  
setTimer(0.1); 


Then in your baddy:

PHP Code:

// Assumed Baddy Code
function onActionDamage(dmgfrom) {
  
// Tell Attacker's Client to Draw Damage Text
  
findplayer(from).triggerclient("weapon""-Effects_Text""npcdmg"this.xthis.ydmg);


Upon doing damage to the baddy it should tell your client to display the floating damage text on your screen.

If you just want to test the code out:

PHP Code:

//#CLIENTSIDE
function onCreated() {
  
setTimer(0.5);
}

function 
onTimeout() {
  
temp.dmg int(random(1,10000));
  
findweapon("-Effects_Text").showDamage(temp.dmg);
  
setTimer(0.5);


If you want to see the effect just walk outside OSL on Zodiac and there should be some PKers killing each other.

Deas_Voice 12-25-2010 01:21 PM

nice work, screenshots?

oh and, didn't you forget a param in the triggerclient baddy part?

Twaina 01-05-2011 03:40 AM

Nice

fowlplay4 07-03-2011 07:09 AM

Made a mistake in this script with the id counter, also added a check for the floating array to prevent duplicates.

If a mod could update the OP would be much appreciated.

Admins 07-04-2011 11:12 AM

I've fixed the triggerclient and added a //#CLIENTSIDE :)

fowlplay4 07-04-2011 03:12 PM

The functions were only supposed to be replaced not the whole thing x.x

PHP Code:

//#CLIENTSIDE

function onTimeout() {
  
// Check for Floating Text IDs
  
if (this.floating.size() > 0) {
    
// Loop through Floating Text IDs
    
for (temp.imgidthis.floating) {
      
// Check if ID is expired
      
if (timevar2 >= this.floating.(@imgid)) {
        
// Hide Floating Text
        
hideimg(imgid);
        
// Remove Floating Text ID Data and from Array
        
this.floating.(@imgid) = "";
        
this.floating.remove(imgid);
      }
    }
    
// Continue Looping if there's still Floating Text
    
if (this.floating.size() > 0) {
      
setTimer(0.1);
    }
  }
}

function 
onActionClientSide() {
  switch (
params[0]) {
    case 
"playerdmg":
      
showDamage(params[1]);
      break;
    case 
"npcdmg":
      
showNPCDamage(params[1], params[2], params[3]);
      break;
  }
}

public function 
showDamage(dmg) { 
  
// Determine Coordinates 
  
temp.tx player..5 random(-1,1); 
  
temp.ty player.random(-1,1); 
  
// Img ID Counter 
  
this.counter_npc = (this.counter_npc) % 20
  
// Draw Floating Text 
  
showFloatingText(this.counter_npctxtydmg100); 


public function 
showNPCDamage(txtydmg) { 
  
// Img ID Counter 
  
this.counter_npc = (this.counter_npc) % 20
  
// Draw Floating Text 
  
showFloatingText(200 this.counter_npctxtydmg100); 


public function 
showFloatingText(imgidtxtymsgrgbz) { 
  
// Hideimg just in case
  
hideimg(imgid);
  
// Add to Image Tracking Array 
  
if (!(imgid in this.floating)) this.floating.add(imgid); 
  
// Set Time to Hide 
  
this.floating.(@imgid) = timevar2 0.75
  
// Display Text 
  
showani(imgidtxty0"effect_floatingtext"msgrgbz); 
  
// Timeout 
  
setTimer(0.1); 



Admins 07-04-2011 04:45 PM

I already thought that something is missing, must have been late for Tig :D


All times are GMT +2. The time now is 09:16 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
Copyright (C) 1998-2019 Toonslab All Rights Reserved.