SA-MP Forums Archive
OnPlayerTakeDamage [help wanted] - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: OnPlayerTakeDamage [help wanted] (/showthread.php?tid=302320)



OnPlayerTakeDamage [help wanted] - klotebandit - 08.12.2011

Ok, so i got a problem.

I am trying to make a script wich creates a 3dtextlabel with the damage someone takes.
I am not really sure why it's not working so please help me becouse im getting a lot of errors
I'm not verry experienced yet.

Heres my code (it's part of my bigger main code):
Код:
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
{
	new Float:X, Float:Y, Float:Z;
	GetPlayerPos( playerid, X, Y, Z );
	posZ = Z;
	posX = X;
	posY = Y;
	damage = amount;
	for(new i=0; i<15; i++)
	{
 	SetTimer("Damagetimer", 100, false);
	}
	return 1;
}

public Damagetimer()
{
	posZ = posZ+0.1;
	dmg1 = Create3DTextLabel(damage,COLOR_RED,posX,posY,posZ,50.0,0);
    Delete3DTextLabel(dmg1);
    return 1;
}
Here are ther errors that i get

Код:
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1367) : warning 213: tag mismatch
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1368) : warning 213: tag mismatch
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1369) : warning 213: tag mismatch
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1370) : warning 213: tag mismatch
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1380) : warning 213: tag mismatch
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1381) : error 035: argument type mismatch (argument 1)
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1386) : warning 203: symbol is never used: "RandomSpawn"
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1370) : warning 204: symbol is assigned a value that is never used: "damage"
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1368) : warning 204: symbol is assigned a value that is never used: "posX"
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1369) : warning 204: symbol is assigned a value that is never used: "posY"
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1369 -- 1386) : warning 203: symbol is never used: "strtok"
Thanks already for your replies.


Re : OnPlayerTakeDamage [help wanted] - mehdi-jumper - 08.12.2011

Give us numbers with the lines plz


Re: OnPlayerTakeDamage [help wanted] - klotebandit - 08.12.2011

Sorry, here with line numbers
(thanks for the fast reply)

Код:
1363 - public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
1364 - {
1365 - 	new Float:X, Float:Y, Float:Z;
1366- 	GetPlayerPos( playerid, X, Y, Z );
1367 - 	posZ = Z;
1368 - 	posX = X;
1369 - 	posY = Y;
1370 - 	damage = amount;
1371 - 	for(new i=0; i<15; i++)
1372 - 	{
1373 - 	SetTimer("Damagetimer", 100, false);
1374 - 	}
1375 - 	return 1;
1376 - }
1378 - 
1379 - public Damagetimer()
1380 - {
1381 - 	posZ = posZ+0.1;
1382 - 	dmg1 = Create3DTextLabel(damage,COLOR_RED,posX,posY,posZ,50.0,0);
1383 -     Delete3DTextLabel(dmg1);
1384 -    return 1;
1385 - }



Re: OnPlayerTakeDamage [help wanted] - klotebandit - 08.12.2011

Ok, that helped me quite a lot.
Still got some problems though,
i want to make the 3dtextlabel climb 0.1 unit 15 times over the course of 1.5 seconds
thats what im using the forloop for but still cant quite understand how to get the damage
working properly.

Код:
 1360 - public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
1360 - {
1361 - 	damage = amount;
1362 - 	for(new i=0; i<15; i++)
1363 - 	{
1364 -  	SetTimer("Damagetimer", 100, false);
1365 - 	Delete3DTextLabel(dmg1);
1366 - 	}
1367 - 	return 1;
1368 - }
1369 - 
1370public Damagetimer()
1371 - {
1372 -     GetPlayerPos( playerid, X, Y, Z );
1373 - 	dmg1 = Create3DTextLabel(damage,COLOR_RED,X,Y,Z+0.1,50.0,0);
1374 -    return 1;
1375 - }
these are ther errors

Код:
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1362) : warning 213: tag mismatch
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1373) : error 017: undefined symbol "playerid"
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1374) : error 035: argument type mismatch (argument 1)
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1378) : warning 203: symbol is never used: "RandomSpawn"
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1362) : warning 204: symbol is assigned a value that is never used: "damage"
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1362 -- 1378) : warning 203: symbol is never used: "strtok"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


2 Errors.



Re: OnPlayerTakeDamage [help wanted] - jonrb - 08.12.2011

You should use SetTimerEx("DamageTimer",100*i,false,"if",playerid ,amount); and change Damagetimer() to being DamageTimer(playerid, Float:amount), then in DamageTimer(..) create a new string and format it to contain the damage.


Re: OnPlayerTakeDamage [help wanted] - klotebandit - 09.12.2011

Thanks for your reply

Ok, im in school right now so i wont be able to test it when im home ill see what i can do. i was thinking; could it be usefull if i use 2 timers one 3dlabelcreate timer and one 3dlabeldelete timer so i can manage when its created and deleted. The only problem left for me would be how to get the getplayerpos and the amount of damage in the timer.

Annyone any idea how i could do that


Re: OnPlayerTakeDamage [help wanted] - klotebandit - 21.01.2012

Ok, so i got it to work, when i fall off something it displays my damage, I however still want it to move up. i think i have to store the Float:amount as a variable but im not sure how to do that, hope somebody could help me fix this.

Код:
1373  public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
1374  {
1375       new Float:X, Float:Y, Float:Z;
1376       new string[128];
1377  	speler = playerid;
1378    	SetTimer("Damagestarttimer", 500, false);
1379  	stringa = format(string, sizeof(string), "%.0f",amount);
1380  }
1381
1382  public Damagestarttimer()
1383  {
1384      GetPlayerPos( speler, X, Y, Z );
1385      dmg1 = Create3DTextLabel(stringa,COLOR_RED,X,Y,Z+0.1,50.0,0);
1386      SetTimer("Damagestoptimer", 500, false);
1387      Delete3DTextLabel(dmg1);
1388      return 1;
1389  }
1390
1391  public Damagestoptimer()
1392  {
1393  Delete3DTextLabel(dmg1);
1394  return 1;
1395  }
I got these errors:
Код:
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1375) : warning 203: symbol is never used: "Z"
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1375) : warning 203: symbol is never used: "Y"
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1375) : warning 203: symbol is never used: "X"
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1384) : error 017: undefined symbol "X"
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1385) : error 035: argument type mismatch (argument 1)
D:\Gta related\GTA Modern Warfare\samp\gamemodes\CODSW11.pwn(1379) : warning 204: symbol is assigned a value that is never used: "stringa"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


2 Errors.
EDIT: I know I have to use a for loop, but i first want to make the 3d textlabel work in a timer. If it works in the timer i can make the upward motion myself.