[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Wie muss ich das ungefähr verändern?
Da musst du ein bisschen rumprobieren:ocmd:mine(playerid)
{
new Float:p[4];
GetPlayerPos(playerid,p[0],p[1],p[2]),GetPlayerFacingAngle(playerid,p[3]);
const Float:distance = 0.75; //jetzt wäre die Bombe etwas weiter vorne
p[0] += (distance * floatsin(-p[3], degrees));
p[1] += (distance * floatcos(-p[3], degrees));
CreateObject(19602,p[0],p[1],p[2]-0.93,0,0,0);
ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.1,0,1,1,0,0,1);
return 1;
}mfg.

-
-
Beitrag von ENEF ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Kannst mir da auch noch helfen ?
Da musst du sowas ungefähr machen:#define MAX_MINES 100
enum e_Mines {
e_model,
Float:e__X,
Float:e__Y,
Float:e__Z
};new mines[MAX_MINES][e_Mines],bool:mine_t[MAX_PLAYERS char];
ocmd:mine(playerid)
{
if(mine_t{playerid}) return SendClientMessage(playerid,-1,"Bitte warte einen kurzen Moment, bevor du die Nächste Mine erstellst!");
new m_idx = GetFreeMine();
if(m_idx == MAX_MINES) return SendClientMessage(playerid,-1,"Es wurde bereits die maximale Anzahl an Minen erstellt!");
new Float:p[4];
GetPlayerPos(playerid,p[0],p[1],p[2]),GetPlayerFacingAngle(playerid,p[3]);
const Float:distance = 0.75; //jetzt wäre die Bombe etwas weiter vorne
p[0] += (distance * floatsin(-p[3], degrees));
p[1] += (distance * floatcos(-p[3], degrees));
mine_t{playerid} = true;
mines[m_idx][e_model] = CreateObject(19602,p[0],p[1],p[2]-0.93,0,0,0);
mines[m_idx][e__X] = p[0],mines[m_idx][e__Y] = p[1],mines[m_idx][e__Z] = p[2];
ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.1,0,1,1,0,0,1);
SetTimerEx("@ta",1000*5,0,"i",playerid);
return 1;
}@ta(i);@ta(i) return mine_t{i}=false;
//Du brauchst einen Timer (unter OnGameModeInit)
SetTimer("@Bomb",599,1);//Dann irgendwo außerhalb von Callbacks..etc
@Bomb();@Bomb() {
for(new i; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i) || mine_t{i}) continue;
for(new b; b<MAX_MINES; b++) {
if(!mines[b][e_model]) continue;
if(IsPlayerInRangeOfPoint(i,2.5,mines[b][e__X],mines[b][e__Y],mines[b][e__Z])) { PlayerOnMine(i,b); break; }
}
}
return 1;
}stock PlayerOnMine(playerid, b) {
//Hier ist halt die Explosion:
CreateExplosion(mines[b][e__X], mines[b][e__Y], mines[b][e__Z], 12, 10.0);
DestroyObject(mines[b][e_model]),mines[b][e_model]=0;
SendClientMessage(playerid,-1,"BOOOOOOOOM!");
return 1;
}stock GetFreeMine() {
for(new i; i<MAX_MINES; i++) if(!mines[i][e_model]) return i;
return MAX_MINES;
}mfg.

//Edit: Kleinigkeiten
Edit²:So würde er aber schon beim erstellen der Mine, die Mine zum explodieren bringen

Ahaha danke, daran habe ich gar nicht gedacht #gefixxt
-
So würde er aber schon beim erstellen der Mine, die Mine zum explodieren bringen

-
Beitrag von AirM4X ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Ich habe mal deine Version ausprobiert:
Keine Errors/Warnings.
Erstellen funktioniert problemlos, doch beim betreten der Mine passiert nichts. Habe den Timer der unter OnGameModeInit sollte in mein FS reingebracht, ist das so in Ordnung oder muss das in mein Gamemode rein?Oder woran könnte es sonst liegen, hmm..
-
oder muss das in mein Gamemode rein?
Der Timer muss dahin, wo du den anderen Code auch hingetan hast...Wenn du das alles in ein Filterscript schreibst, dann musst du SetTimer natürlich unter OnFilterScriptInit schreiben

Falls du das gemacht hast und es immernoch nicht geht, mach mal die Range höher (also unter @Bomb schreib es so):
if(IsPlayerInRangeOfPoint(i,4.5,
mfg.

-
-
-
Könntest du mir die Werte erklären?
Dafür wurde das Wiki geschaffen: http://wiki.sa-mp.com/wiki/CreateExplosion_DEHier eine Liste mit Explosions IDs: http://wiki.sa-mp.com/wiki/Explosion_List
Wenn du so ne richtig fette Explosion willst:
CreateExplosion(mines[b][e__X], mines[b][e__Y], mines[b][e__Z], 7, 10.0);
@[LnD]JustMe.77: Ja dein Code wurde in BBCodes ungewandelt, schau nochmal (hab ihn grad editiert beim 1. fehlte das [b ])

mfg.

-
Danke aber bei dem letzen Code bekomme ich ein Error:
CreateExplosion(mines[e__X], mines[b][e__Y], mines[b][e__Z], 7, 10.0);
C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Maps.pwn(323) : error 035: argument type mismatch (argument 1)
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase1 Error.
-
mines[e__X], mines[e__Y], mines[b][e__Z]
Fällt dir was auf?
Du hast jeweils [b] vergessen
-
Ist es möglich Objekte nur für bestimmte Spieler anzeigen zu lassen, Beispiel wenn er lv 5 ist?
Müsste man die Objekte dann unter ONomadenvölker/spawn hinschreiben? Würde das Komplikationen geben oder ist es nicht schlimm? -
Du könntest mit der Funktion CreatePlayerObject arbeiten.
http://wiki.sa-mp.com/wiki/CreatePlayerObject -
enum tInfo
Statsbox[0] = CreatePlayerTextDraw(playerid,690.000000, 150.000000, "Box");
PlayerTextDrawBackgroundColor(playerid,Statsbox[0], 255);Erorrs:
(76) : error 001: expected token: ";", but found "enum"
(4602) : error 017: undefined symbol "CreatePlayerTextDraw"
(4602) : warning 213: tag mismatch
(4603) : error 012: invalid function call, not a valid address
(4603) : warning 215: expression has no effect
(4603) : warning 215: expression has no effect
(4603) : warning 215: expression has no effect
(4603) : error 001: expected token: ";", but found ")"
(4603) : error 029: invalid expression, assumed zero
(4603) : fatal error 107: too many error messages on one lineWeiß jemand was man machen muss?
-
enum tInfo
Was soll das da?
Einfach mal löschen

und hast du oben a_samp included?!

-
Was soll das da?
Einfach mal löschen

und hast du oben a_samp included?!

ich habe den Fehler schon behoben, es hat ein Semikolon in der Zeile zuvor gefehlt. Habe aber noch Probleme mit Zeile/Error 4603
-
Habe aber noch Probleme mit Zeile/Error 4063
Wenn du uns zeigst, was in der Zeile steht und wie du Statsbox deklariert hast...könnte man dir evtl helfen
-
Wenn du uns zeigst, was in der Zeile steht und wie du Statsbox deklariert hast...könnte man dir evtl helfen
Statsbox[0] = CreatePlayerTextDraw(playerid,690.000000, 150.000000, "Box");
new PlayerText:Statsbox[10];
new PlayerTextDrawBackgroundColor[2]
;new CreatePlayerTextDraw[10]
#define MAX_FUELSTATION 20 //
;enum tInfodanke für die Hilfe

