[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Debugge es so:
printf("playerid: %d | Contract: %d | killerid: %d", playerid, PlayerInfo[playerid][pContracted], killerid);
if(PlayerInfo[playerid][pContracted] == 1 && killerid != INVALID_PLAYER_ID)
{
printf("member: %d | leader: %d", PlayerInfo[killerid][pMember], PlayerInfo[killerid][pLeader]);
if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8)
{
printf("Ausgeführt.");
new killer[MAX_PLAYER_NAME];
GetPlayerName(killerid, killer, sizeof(killer));
GivePlayerMoney(killerid, PlayerInfo[playerid][pContractSumme]);
format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und bekommt: $%d >>",killer,name,PlayerInfo[playerid][pContractSumme]);
printf("string: %s", string);
SendFamilyMessage(8, COLOR_YELLOW, string);
PlayerInfo[playerid][pContracted] = 0;
PlayerInfo[playerid][pContractSumme] =0;
}
}Was steht dann im Log?
-
-
Also hast du doch kein Contract.

-
Doch hab ich aber hier ist mal der contract befehl.
if(strcmp(cmd, "/contract", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /contract [playerid] [Betrag]");
return 1;
}
giveplayerid = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /contract [playerid] [Betrag]");
return 1;
}
moneys = strval(tmp);
if(moneys < 5000 || moneys > 99999999) { SendClientMessage(playerid, COLOR_GREY, " Du musst mindestens 5000$ angeben."); return 1; }
if(PlayerInfo[playerid][pLevel] < 3)
{
SendClientMessage(playerid, COLOR_GRAD1, "Du mußt mindestens Level 3 haben.");
return 1;
}
if (IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if(PlayerInfo[giveplayerid][pMember] == 8 && PlayerInfo[playerid][pLeader] == 8)
{
SendClientMessage(playerid, COLOR_GREY, " Du kannst keine Verträge mit deiner eigenen Agentur abschließen!");
return 1;
}
else if(PlayerInfo[giveplayerid][pLeader] == 8 && PlayerInfo[playerid][pMember] == 8)
{
SendClientMessage(playerid, COLOR_GREY, " Du kannst keine Verträge mit deiner eigenen Agentur abschließen!");
return 1;
}
else if(PlayerInfo[giveplayerid][pMember] == 8||PlayerInfo[giveplayerid][pLeader] == 8)
{
SendClientMessage(playerid, COLOR_GREY, " Du kannst diesen Spieler nicht unter /contract nehmen da er Verbugt ist !");
return 1;
}
if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht selber unter Vertrag nehmen!"); return 1; }
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
playermoney = GetPlayerMoney(playerid);
if (moneys > 0 && playermoney >= moneys)
{
GivePlayerMoney(playerid, (0 - moneys));
PlayerInfo[giveplayerid][pContractSumme]+=moneys;
format(string, sizeof(string), "%s möchte das ein Hitman die Zielperson: %s für $%d tötet.",sendername, giveplayer, moneys);
SendFamilyMessage(8, COLOR_YELLOW, string);
format(string, sizeof(string), "* Du hast einem Hitman den Auftrag zur Beseitigung von %s für $%d erteilt.",giveplayer, moneys);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Falsche Angaben!");
}
}
}
else
{
format(string, sizeof(string), " %s ist kein Aktiver Spieler.", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return 1;
} -
Doch hab ich aber hier ist mal der contract befehl.
if(strcmp(cmd, "/contract", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /contract [playerid] [Betrag]");
return 1;
}
giveplayerid = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /contract [playerid] [Betrag]");
return 1;
}
moneys = strval(tmp);
if(moneys < 5000 || moneys > 99999999) { SendClientMessage(playerid, COLOR_GREY, " Du musst mindestens 5000$ angeben."); return 1; }
if(PlayerInfo[playerid][pLevel] < 3)
{
SendClientMessage(playerid, COLOR_GRAD1, "Du mußt mindestens Level 3 haben.");
return 1;
}
if (IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if(PlayerInfo[giveplayerid][pMember] == 8 && PlayerInfo[playerid][pLeader] == 8)
{
SendClientMessage(playerid, COLOR_GREY, " Du kannst keine Verträge mit deiner eigenen Agentur abschließen!");
return 1;
}
else if(PlayerInfo[giveplayerid][pLeader] == 8 && PlayerInfo[playerid][pMember] == 8)
{
SendClientMessage(playerid, COLOR_GREY, " Du kannst keine Verträge mit deiner eigenen Agentur abschließen!");
return 1;
}
else if(PlayerInfo[giveplayerid][pMember] == 8||PlayerInfo[giveplayerid][pLeader] == 8)
{
SendClientMessage(playerid, COLOR_GREY, " Du kannst diesen Spieler nicht unter /contract nehmen da er Verbugt ist !");
return 1;
}
if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht selber unter Vertrag nehmen!"); return 1; }
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
playermoney = GetPlayerMoney(playerid);
if (moneys > 0 && playermoney >= moneys)
{
GivePlayerMoney(playerid, (0 - moneys));
PlayerInfo[giveplayerid][pContractSumme]+=moneys;
format(string, sizeof(string), "%s möchte das ein Hitman die Zielperson: %s für $%d tötet.",sendername, giveplayer, moneys);
SendFamilyMessage(8, COLOR_YELLOW, string);
format(string, sizeof(string), "* Du hast einem Hitman den Auftrag zur Beseitigung von %s für $%d erteilt.",giveplayer, moneys);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Falsche Angaben!");
}
}
}
else
{
format(string, sizeof(string), " %s ist kein Aktiver Spieler.", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return 1;
} -
PlayerInfo[giveplayerid][pContracted] = 1;
fehlt. -
Jeffry:
Ich bedanke mich herzlich es funktioniert.
if(strcmp(cmd, "/tp", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,F_Gray,"Befehl: /tp [SpielerID/Name]");
return 1;
}
new Float:plocx,Float:plocy,Float:plocz;
new plo;
plo = ReturnUser(tmp);
if(IsPlayerConnected(plo))
{
if(plo != INVALID_PLAYER_ID)
{
if(PlayerInfo[playerid][pAdmin] >= 2)
{
if(Spectate[playerid] != 255)
{
Spectate[playerid] = 256;
}
GetPlayerPos(plo, plocx, plocy, plocz);
if(IsPlayerInAnyVehicle(playerid)==1 )
{
new susplayer[MAX_PLAYER_NAME];
GetPlayerName(plo, susplayer, sizeof(susplayer));
new tmpcar = GetPlayerVehicleID(playerid);
SetVehiclePos(tmpcar, plocx, plocy+4, plocz);
PutPlayerInVehicle(susplayer, tmpcar);
TelePos[playerid][0] = 0.0;TelePos[playerid][1] = 0.0;
}
else
{
SetPlayerPos(playerid,plocx,plocy+2, plocz);
}
if (GetPlayerState(playerid) == 2)
{
new tmpcar = GetPlayerVehicleID(playerid);
SetVehiclePos(tmpcar, plocx, plocy+4, plocz);
TelePos[playerid][0] = 0.0;TelePos[playerid][1] = 0.0;
}
else
{
SetPlayerPos(playerid,plocx,plocy+2, plocz);
}
PlayerInfo[playerid][pLocal] = PlayerInfo[plo][pLocal];
PlayerInfo[playerid][pInt] = PlayerInfo[plo][pInt];
SetPlayerInterior(playerid,PlayerInfo[plo][pInt]);
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(plo));
SendClientMessage(playerid,F_Red,"Du hast dich Teleportiert");
GetPlayerName(plo, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[playerid][pAdmin] >= 2000) { }
else {
format(string, sizeof(string), "%s hat sich zu %s geportet.", sendername, giveplayer);
ABroadCast(0x00F5FFFF,string,4);
}
}
else
{
SendClientMessage(playerid,F_Gray,"Du hast nicht genug Rechte!");
}
}
}
else
{
format(string, sizeof(string), "%d ist kein Aktiver Spieler.", plo);
SendClientMessage(playerid,F_Gray, string);
}
}
return 1;
}
Hier o.g. ist mein TP Befehl.
Wenn Spieler A (Ich) mich zu Spieler B (Ziel) Teleportieren will und ein Auto hab soll Spieler B auf einen Freien Beifahrer Sitz kommen.
Weißt du wie oder was ich verändern muss. -
Hi,
was hab ich da an parametern falsch gemacht
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40473) : error 035: argument type mismatch (argument 5)
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase1 Error.
Die Zeile ist falsch
mysql_SetInt("ostereier", "Gefunden", 1, "Ei", 1); -
mysql_SetInt("ostereier", "Gefunden", 1, "Ei", "1");
@FerienFreak: Du musst erst mal herausfinden wie viele Sitzplätze das Fahrzeug hat und den Spieler dann in einen freien Platz setzen. Ich würde dir raten, versuche es erst mal mit Sitz 1 als Test, immer.
Mache dann gegebenenfalls einen Thread auf, da das keine kleine Frage mehr ist. -
-
Grüße,
Ich habe dieses Autohaus verwendet ( Autohaus in LS Version 2.x ) leider wird Komischerwieße die Farbe nicht mit Gespeichert. Weiß einer eventuell woran es liegen könnte?Der Speicher stock schaut so aus:
stock SaveVehicles(string[],playerid)
{
new entry[256],str[256];
format(str, sizeof(str),"/Autohaus/%s.ini",SpielerName(playerid));
format(entry, sizeof(entry), "%s\n",string);
new File:hFile;
hFile = fopen(str, io_write);
fwrite(hFile, entry);
fclose(hFile);
return 1;
}Freundlichen Grüße
-
Jeffry:
Kannst mir da vllt. weiterhelfen
ocmd:osterei(playerid,params[])
{
if(!IsPlayerConnected(playerid)) return 1;
if(!IsPlayerInRangeOfPoint(playerid,10.0,1672.9427,-1710.8188,20.4844)) return SendClientMessage(playerid,COLOR_LIGHTRED,"An dieser stelle befindet sich kein Osterei!");
{
//EI1
new str[128],name[24];
GetPlayerName(playerid,name,sizeof(name));
format(str,sizeof(str),"**Osterevent** %s hat ein Osterei gefunden! Als Geschenk bekommt er 20.000$",name);
SendClientMessageToAll(COLOR_DBLUE,str);
GivePlayerMoney(playerid,20000);
mysql_SetInt("ostereier", "Gefunden", 1, "Ei", "1");
}
else if(!IsPlayerInRangeOfPoint(playerid,10.0,1954.1132,-1366.3181,18.5781)) return SendClientMessage(playerid,COLOR_LIGHTRED,"An dieser stelle befindet sich kein Osterei!");
{
//EI2
new str[128],name[24];
GetPlayerName(playerid,name,sizeof(name));
format(str,sizeof(str),"**Osterevent** %s hat ein Osterei gefunden! Als Geschenk bekommt er 10.000$",name);
SendClientMessageToAll(COLOR_DBLUE,str);
GivePlayerMoney(playerid,10000);
}
else if(!IsPlayerInRangeOfPoint(playerid,10.0,1551.6409,-1358.6128,329.4719)) return SendClientMessage(playerid,COLOR_LIGHTRED,"An dieser stelle befindet sich kein Osterei!");
{
//ei3
new str[128],name[24];
GetPlayerName(playerid,name,sizeof(name));
format(str,sizeof(str),"**Osterevent** %s hat ein Osterei gefunden! Als Geschenk bekommt er 5.000$",name);
SendClientMessageToAll(COLOR_DBLUE,str);
GivePlayerMoney(playerid,5000);
}
else if(!IsPlayerInRangeOfPoint(playerid,10.0,826.0994,-2058.0967,12.8672)) return SendClientMessage(playerid,COLOR_LIGHTRED,"An dieser stelle befindet sich kein Osterei!");
{
//ei4
new str[128],name[24];
GetPlayerName(playerid,name,sizeof(name));
format(str,sizeof(str),"**Osterevent** %s hat ein Osterei gefunden! Als Geschenk bekommt er 20.000$",name);
SendClientMessageToAll(COLOR_DBLUE,str);
GivePlayerMoney(playerid,20000);
}
//geht weiter habs gekürzt
}kommt dieser fehler
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40460) : error 029: invalid expression, assumed zero
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40460) : warning 215: expression has no effect
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40460) : error 001: expected token: ";", but found "if"
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40469) : error 029: invalid expression, assumed zero
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40469) : warning 215: expression has no effect
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40469) : error 001: expected token: ";", but found "if"
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40478) : error 029: invalid expression, assumed zero
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40478) : warning 215: expression has no effect
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40478) : error 001: expected token: ";", but found "if"
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40487) : error 029: invalid expression, assumed zero
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40487) : warning 215: expression has no effect
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40487) : error 001: expected token: ";", but found "if"
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40496) : error 029: invalid expression, assumed zero
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40496) : warning 215: expression has no effect
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40496) : error 001: expected token: ";", but found "if"
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40505) : error 029: invalid expression, assumed zero
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40505) : warning 215: expression has no effect
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40505) : error 001: expected token: ";", but found "if"
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40514) : error 029: invalid expression, assumed zero
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40514) : warning 215: expression has no effect
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40514) : error 001: expected token: ";", but found "if"
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40523) : error 029: invalid expression, assumed zero
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40523) : warning 215: expression has no effect
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40523) : error 001: expected token: ";", but found "if"
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40532) : error 029: invalid expression, assumed zero
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40532) : warning 215: expression has no effect
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40532) : error 001: expected token: ";", but found "if"
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40541) : error 029: invalid expression, assumed zero
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40541) : warning 215: expression has no effect
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40541) : error 001: expected token: ";", but found "if"
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40550) : error 029: invalid expression, assumed zero
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40550) : warning 215: expression has no effect
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40550) : error 001: expected token: ";", but found "if"
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40559) : error 029: invalid expression, assumed zero
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40559) : warning 215: expression has no effect
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40559) : error 001: expected token: ";", but found "if"
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40568) : error 029: invalid expression, assumed zero
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40568) : warning 215: expression has no effect
C:\Users\admin\Desktop\PAWN\gamemodes\Nol.pwn(40568) : error 001: expected token: ";", but found "if"Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
26 Errors.
-
Jeweils das return SendClientMessage weg machen, hinter den IsPlayerInRangeOfPoint Abfragen.
Das machst du nur einmal ganz unten hin, in einem else. -
Jeffry:
Sorry das ich dich so mit fragen Bombadiere
Es klappt alles soweit bis auf das in der Datenbank der Datensatz bearbeitet wird.
else if(IsPlayerInRangeOfPoint(playerid,10.0,1954.1132,-1366.3181,18.5781))
{
//EI2
new str[128],name[24];
GetPlayerName(playerid,name,sizeof(name));
format(str,sizeof(str),"**Osterevent** %s hat ein Osterei gefunden! Als Geschenk bekommt er 10.000$",name);
SendClientMessageToAll(COLOR_DBLUE,str);
GivePlayerMoney(playerid,10000);
mysql_SetInt("ostereier", "Gefunden", 1, "Ei", "2");
}
Ich hab das Ei aufgesammelt, Prämie alles bekommen bis auf das Ei2 in der datenbank das Gefunden auf 1 gesetzt wird.
-
Hallo, habe mal eine kleine Frage.
Kann man das irgendwie machen, dass man bevor man sich eingeloggt keine Befehle ausführen kann.
Also diese keine Wirkung haben? -
Hey,
du setzt eine SpielerVariable beim Einloggen auf eins.
Ist er nicht eingeloggt ist sie auf 0
Dann fragst du bei jedem Befehl ab ob er eingeloggt ist.if(SpielerVariable == 0)return SendClientMessage...
-
Was bedeutet das:
Spoiler anzeigen [01:30:08] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'morshuser'@'localhost' (using password: YES)
[01:30:08] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'morshuser'@'localhost' (using password: YES)
[01:30:08] [ERROR] CMySQLQuery::Execute[()] - (error #2006) MySQL server has gone away
[01:30:08] [WARNING] CMySQLQuery::Execute[()] - lost connection, reconnecting..
[01:30:08] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'morshuser'@'localhost' (using password: YES)
-
[quote='Schlaubi','index.php?page=Thread&postID=2057624#post2057624']Hallo, habe mal eine kleine Frage.
Kann man das irgendwie machen, dass man bevor man sich eingeloggt keine Befehle ausführen kann.
Also diese keine Wirkung haben?[quote]
Meinst du sowas wie:
IsPlayerConnected(Player) -
Hey,
du setzt eine SpielerVariable beim Einloggen auf eins.
Ist er nicht eingeloggt ist sie auf 0
Dann fragst du bei jedem Befehl ab ob er eingeloggt ist.if(SpielerVariable == 0)return SendClientMessage...
Ok, Danke.
Hab die Variable sowieso schon gesetzt.
Muss ich dann nurnoch abfragen.
Alles anzeigenWas bedeutet das:
Spoiler anzeigen [01:30:08] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'morshuser'@'localhost' (using password: YES)
[01:30:08] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'morshuser'@'localhost' (using password: YES)
[01:30:08] [ERROR] CMySQLQuery::Execute[()] - (error #2006) MySQL server has gone away
[01:30:08] [WARNING] CMySQLQuery::Execute[()] - lost connection, reconnecting..
[01:30:08] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'morshuser'@'localhost' (using password: YES)
Das bedeutet dass du wahrscheinlich das falsche Passwort im Script eingetragen hast. Darum wird dir der Zugriff verwehrt. -
