Das kannst du mit TextDrawAlignment machen:
TextDrawAlignment(textdraw, 2);
Beiträge von Haxler
-
-
Hattest du bei Show Code den Haken bei Centered drin? Falls ja: rausmachen, dann stimmen die Koordinaten wieder.
-
Wenn die Werte stimmen muss es an if(newcar == kaufauto[i]) liegen. Wie ist newcar denn definiert? newcar = GetPlayerVehicleID(playerid); ?
-
new ID=GetNearestHaus(playerid,4);
und später hast du nochmal
new ID=GetNearestHausExit(playerid,3);
erstell die variable einfach davor:if(newkeys & KEY_SECONDARY_ATTACK)
{
new ID;
if(!GetPVarInt(playerid,"HUHNFISCH_InHaus"))
{
ID = GetNearestHaus(playerid,4);
if(ID == -1) return true; // Hier
if(Haus[ID][Abgeschlossen]) return true;
SetPlayerInterior(playerid,Haus[ID][Int]);
SetPlayerPos(playerid,Haus[ID][Pos][3],Haus[ID][Pos][4],Haus[ID][Pos][5]);
SetPlayerVirtualWorld(playerid,Haus[ID][VirtualWorld]);
SetPVarInt(playerid,"HUHNFISCH_InHaus",true);
return true;
}
ID=GetNearestHausExit(playerid,3);
if(ID == -1) return true; // Hier
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2]);
SetPlayerVirtualWorld(playerid,0);
DeletePVar(playerid,"HUHNFISCH_InHaus");
return true;
} -
Eine direkte Möglichkeit fällt mir dazu nicht ein. Du könntest vielleicht mit SetVehicleVelocity das Bike "zwingen" nicht so hoch zu springen.
-
Du kannst den Fehler relativ schnell finden wenn du große Teile per /* und */ auskommentierst und kompilierst. Falls der Compiler dann nicht crasht weißt du in welchem Teil der Fehler sein muss. Das machst du dann so oft bis du die Stelle gefunden hast
-
Der Fehler könnte auf einen Klammerfehler hinweisen, passiert aber auch teilweise wenn du Ausdrücke verwendest, die der Compiler nicht versteht. Hatte auch schon irgendwo ein Sonderzeichen stehen was da nicht hingehört hat.
Normalerweise kannst du einfach auf Nicht Senden drücken und Pawno bleibt geöffnet. Dann kannst du die letzten Änderungen rückgängig machen, vielleicht findest du so den Fehler schnell. -
-
Habs mir nochmal genau angeschaut.
if(pID == -1)
{
format(string,sizeof(string),"{23FF00}%s{FEFEFE} - Anrufen",Handyid(playerid));
ShowPlayerDialog(playerid,DIALOG_ANRUFEN,DIALOG_STYLE_INPUT,string,"{FF0037}Bitte gib eine korrekte Handynummer an!\n\n{FEFEFE}Wen möchtest du anrufen ?\nNutze /telefonbuch\nBedenke vorher die Kosten die das ganze\nmit sich trägt!","Anrufen","Abbrechen");
}
deine Funktion HandyNummerRichtig gibt -1 zurück, falls kein Spieler diese Nummer besitzt. -
-
Wie sieht denn die Handynummer aus? Du kannst dir per printf die eingegebene Nummer und die dazugehörige Spieler-ID ausgeben lassen, dann siehst du vielleicht woran es liegt.
-
new pID = HandyNummerRichtig(strval(inputtext));
if(pID != -1)
{}
damit würdest du die Spieler-ID der eingegebenen Nummer herausfinden. -
Wenn ich das richtig sehe versuchst du mit HandyNummerRichtig die dazugehörige Spieler-ID herauszufinden.
new nummer = SpielerInfo[playerid][Handynr];
new pID = HandyNummerRichtig(nummer);
würde dir demnach die Spieler-ID des Anrufers ausgeben, da du seine Nummer überprüfst. -
Wenn du dir Include-Datei anguckst findest du folgende Zeile:
#define COMMAND:%1(%2) \
forward cmd_%1(%2); \
public cmd_%1(%2)
d.h. du kannst die Funktion auch direkt aufrufen: cmd_mv(playerid, params); bzw cmd_mv(playerid, ""); -
Wenn du z.B. stirbst, ohne dass ein Spieler dich umgebracht hat (Fall, Ertrinken,...) ist killerid INVALID_PLAYER_ID. Deshalb solltest du abfragen, ob du von einem Spieler getötet wurdest und nur dann die Nachricht ausgeben:
if(killerid != INVALID_PLAYER_ID) // Überprüfen ob Tod durch Spieler verursacht wurde
{
new pName[MAX_PLAYER_NAME];
GetPlayerName(killerid, pName, MAX_PLAYER_NAME); //Name des Killers herausfinden
new msg[25+MAX_PLAYER_NAME];
format(msg,25+MAX_PLAYER_NAME,"Du wurdest von %s getötet.",pName); //Nachricht formatieren
SendClientMessage(playerid, 0xFF0000FF, msg); //Nachricht an "Opfer" schicken
} -
Dann liegt es an einem anderen Plugin. Update am Besten alle. Welche das Script benötigt siehst du in der server.cfg-Datei.
-
"File or function is not found" lässt darauf schließen, dass du eine Funktion ausführen willst, die es nicht gibt. Kann daran liegen, dass sie z.B. in einer neueren Version des Plugins nicht mehr vorhanden ist. Wobei mir das unwahrscheinlich scheint sofern du die richtige Include-Version verwendest.
-
#define Dialog_aHelp 7
#define HELP_PAGES 2stock ShowAdminHelpPage(playerid,page)
{
switch(page)
{
case 0: ShowPlayerDialog(playerid,Dialog_aHelp,DIALOG_STYLE_MSGBOX,"Admin-Befehle - Seite 1","/heal => Heilen / Fahrzeug reparieren\n/kill => Spieler töten\n/kick => Spieler kicken\n/newcar => Fahrzeug spawnen\n/tp => Spieler herteleportieren\n/tph => Zum Spieler teleportieren\n/tpa => Andere Spieler teleporten","Weiter","Abbrechen");
case 1: ShowPlayerDialog(playerid,Dialog_aHelp,DIALOG_STYLE_MSGBOX,"Admin-Befehle - Seite 2","/setrang => Ränge verändern\n/seth => Energie setzen (0-100)\n/seta => Rüstung setzen(0-100)\n/gw [PlayerID] [WaffenID] (Munition)=> Waffen vergeben\n/cca => Clear Chat All","Weiter","Abbrechen");
// Nächste Seite wäre dann case 3:
}
return true;
}ocdm:ahelp(playerid,params[])
{
if(pInfo[playerid][Rang] > 1)
{
SetPVarInt(playerid, "AHStep", 0);
ShowAdminHelpPage(playerid,0);
}
else
{
SCM(playerid,ROT,"Du bist leider kein Admin!");
SCM(playerid,ROT,"Dein Befehl lautet: /help");
}
return 1;
}public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == Dialog_aHelp)
{
if(response)
{
new step = GetPVarInt(playerid,"AHStep");
step++;
if(step == HELP_PAGES)step = 0;
SetPVarInt(playerid,"AHStep",step);
return ShowAdminHelpPage(playerid,step);
}
}
return 1;
}hab den Code ein wenig umgeschrieben und getestet, funktioniert wie er soll. Du kannst beliebig oft "Weiter" drücken und es wird immer die nächste Seite (bzw. die erste falls du auf der letzten bist) angezeigt. Wenn du mehr Seiten hinzufügen willst einfach MAX_PAGES erhöhen.
e: pawn-Tag richtig eingefügt
-
Verwende doch einfach Templers Code? Musst nur Dialog_aHelp1 und Dialog_aHelp2 jeweils mit Dialog_aHelp ersetzen, dann funktioniert er.
Edit: Musst natürlich noch überprüfen welcher Button gedrückt wurde, so wie es jetzt ist wird bei jeder Aktion die nächste Seite geöffnet -
Die Taste 5 kannst du nicht direkt verwenden (außer du änderst deine Tastenbelegung in GTA). Hier findest du alle verwendbaren Tasten: http://wiki.sa-mp.com/wroot/index.php?title=Keys&redirect=no
Unter OnPlayerKeyStateChange kannst du herausfinden ob und welche Tasten gedrückt werden/wurden. Danach reparierst du das Fahrzeug mit SetVehicleHealth bzw. RepairVehicle.