Ohne Code nix los.
Beiträge von Jeffry
-
-
Leichter ist es mit dem Streamer Plugin, da musst du nicht ständig prüfen ob der Spieler noch in der Virtual World ist.
http://forum.sa-mp.com/showthread.php?t=102865CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 200.0, Float:drawdistance = 0.0);
Beispiel:
CreateDynamicObject(1337,123.45, 456.78, 11.11, 0.0, 0.0, 180.0, 5555); //VW = 5555 -
Im Compiler sind zwei verschiedene Pfade angegeben, das scheint mir so als dass du den Code über einen Doppelklick auf die .pwn Datei öffnest.
Öffne den Code mal, indem du auf deinen Server-Ordner gehst, dann /pawno/ und dann pawno.exe. Dann öffne auf dem richtigen Pfad die .pwn über File => Open.Achte auch darauf, dass du in /pawno/includes alle includes aktuell hast.
-
PlayerInfo[playerid][pGroupname] = strval ( val );
Zu
format(PlayerInfo[playerid][pGroupname], 32, val);Dein Gruppenname wird ja kein Integer (strval) sein.
-
Poste doch einfach mal den Code dieser Gangzone, dann sparen wir uns alle den Blick in die Kristallkugel.

-
public OnPlayerSpawn(playerid)
{
StopAudioStreamForPlayer(playerid);
new Random = random(sizeof(RandomSpawns));
SetPlayerPos(playerid, RandomSpawns[Random][0], RandomSpawns[Random][1], RandomSpawns[Random][2]);
SetPlayerFacingAngle(playerid, RandomSpawns[Random][3]);if(IsPlayerNPC(playerid))
{
new npcname[64];
GetPlayerName(playerid,npcname,64);
if(!strcmp(npcname,"[Bot]Name",true))
{
//SetSpawnInfo(playerid, team, skin, Float:x, Float:y, Float:z, Float:rotation, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
SetSpawnInfo(playerid, 0, 107, 2492.5146, -1703.2296, 1015.5703, 328.5485, 0, 0, 0, 0, 0, 0);
new Text3D:NameEintragen = Create3DTextLabel("Dieb",0xFFFFFFAA,30.0,40.0,50.0,40.0,0);
Attach3DTextLabelToPlayer(NameEintragen, playerid, 0.0, 0.0, 0.5);
SetPlayerColor(playerid,0x00FF00AA);
}
}
return 1;
}@.x22 Zieglein:
Spoiler anzeigen Was soll denn das?
-
if( IsPlayerInRangeOfPoint(playerid,10.0,1565.8591,-1694.4272,5.8906) || IsPlayerInRangeOfPoint(playerid,15.0,200.6968,168.3494,1003.0234) || IsPlayerInRangeOfPoint(playerid,15.0,200.6968,168.3494,1003.0234) )
Du hattest eine Klammer zu viel.
-
printe mal "disAngleFormat" nachdem du es gesetzt hast. Und poste dann was im server_log steht.
print(disAngleFormat);
Und wie hast du es denn definiert?
new disAngleFormat... ? -
Was ist wenn du es so machst?
format(disAngleFormat,sizeof(disAngleFormat),"CRS:~w~ %0.2f",disAngle); -
Könntest du mir eventuell ein Beispielcode dalassen, denn ich kann mich mit deinem Formulierung nicht ganz Identifizieren.
ocmd:moneydrop(playerid)
{
new tmp_id = -1, string[144];
if(PlayerInfo[playerid][pJob] != 22)return SendClientMessage(playerid, -1, "Du bist kein Geldlieferant.");
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendClientMessage(playerid, -1, "Du sitzt in keinem Fahrzeug.");
new carid = GetPlayerVehicleID(playerid);
if(!IsASecuricar(carid))return SendClientMessage(playerid, -1, "Du sitzt in keinem Geldtransporter.");
for ( new i; i < sizeof(Lieferantveh); i++)
{
if(carid != Lieferantveh[i])continue;
tmp_id = i;
break;
}
if(tmp_id == -1)return SendClientMessage(playerid, -1, "Du sitzt in keinem Geldtransporter.");
if(MoneyLoad[tmp_id] == 0)return SendClientMessage(playerid, -1, "Der Geldtransporter ist nicht beladen.");
new atm = -1;
for(new i;i<sizeof(aInfo);i++){
if(!IsPlayerInRangeOfPoint(playerid, 3.0, aInfo[i][a_x], aInfo[i][a_y], aInfo[i][a_z]))continue;
atm = i;
break;
}
if(atm == -1)return SendClientMessage(playerid, -1, "Du bist nicht nahe einer ATM.");
if(aInfo[atm][LoadValue] > 15000)return SendClientMessage(playerid, -1, "Der Automat hat bereits, $15.000");aInfo[atm][LoadValue] += 100;
MoneyLoad[tmp_id] = 0;
new rand = 300 + random(200);
GivePlayerMoney(playerid, rand);
format(string, sizeof(string), "ERFOLGREICH: {FFFFFF}Du hast den Geldtransporter erfolgreich entladen. Verdienst: $i", rand);
SendClientMessage(playerid, COLOR_GREEN, string);
return 1;
}Das nennt sich das "EVA" Prinzip, nach dem solltest du wenn möglich vorgehen. Eingabe-Verarbeitung-Ausgabe
-
Gibt es einen reconnect command, damit man SAMP nicht neustarten muss ?
http://forum.sa-mp.com/showthread.php?t=253451RCON IP Ban => Player Timeout => RCON IP Unban
-
dcmd_arrest(playerid,params[])
{
new pID, zelle
if(sscanf(params,"ud",pID,zelle))return SendClientMessage(playerid,COLOR_RED,"Befehl: /arrest [playerid] [Zelle]");
if(IsACop(playerid))
{
if(SInfo[pID][pWantedpunkte] > 0)
{
if(SInfo[pID][pKnast] == 0)
{
if(IsPlayerInRangeOfPoint(playerid,10.0,613.2817,-608.3835,17.2266) || IsPlayerInRangeOfPoint(playerid,15.0,198.0614,158.9322,1003.0234))
{
if (ProxDetectorS(8.0, playerid, pID))
{
GetPlayerName(playerid,pname,sizeof(pname));
format(str,sizeof(str),"Du hast Spieler %s für %d Minuten eingesperrt!",pname,2*SInfo[pID][pWantedpunkte]);
SendClientMessage(playerid,Blau,str);
new sname[MAX_PLAYER_NAME];
GetPlayerName(pID,sname,sizeof(sname));
format(str,sizeof(str),"<< Officer %s hat %s für %d Minuten eingesperrt! >>",pname,sname,2*SInfo[pID][pWantedpunkte]);
SendClientMessageToAll(Blau,str);SInfo[pID][pKnastzeit] = 2*SInfo[pID][pWantedpunkte];
SInfo[pID][pKnast] = 1;
SInfo[pID][pGefesselt] = 0;
TogglePlayerControllable(pID,1);
GivePlayerMoney(pID,-350*SInfo[pID][pWantedpunkte]);
GivePlayerMoney(playerid,350*SInfo[pID][pWantedpunkte]);
switch(zelle)
{
case 0: SetPlayerPos(pID,1459.2109,-1013.4951,26.8438); // knast Zelle
case 1: SetPlayerPos(pID,...); // knast Zelle
case 2: ...
}SetPlayerSpecialAction(pID,SPECIAL_ACTION_NONE);
SpawnPlayer(pID);
SetPlayerInterior(pID,1);
ResetPlayerWeapons(pID);SInfo[pID][pWantedpunkte] = 0;
SetPlayerWantedLevel(playerid,0);
SetPlayerWantedLevel(pID,SInfo[pID][pWantedpunkte]);
SetPlayerColor(pID, 0xAAAAAA00);
}
else
{
SendClientMessage(playerid,COLOR_RED,"Der Spieler ist zuweit weg von dir!");
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Hier kannst du keinen einsperren!");
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Der Spieler ist schon im Gefängnis!");
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Dieser Spieler hat keine Wanteds!");
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Das darfst du nicht!");
}
return 1;
}Ich hab es dir mal in den Code gemacht, ist eigentlich selbsterklärend.
Wobei mir nicht ganz klar ist, warum du "SpawnPlayer(pID);" nach SetPlayerPos benutzt. -
Auf Anfrage in PM:
So also?
Nein.CMD:kennschild(playerid, params[])
{
new kszahlen,kslaenge,str[20],CarID,kspreis,pID;
if(sInfo[playerid][pFraktion] == 1)return SendClientMessage(playerid,-1,"Du bist nicht im Ordnungsamt");
{
if(sscanf(params,"iiid",CarID,kspreis,kszahlen,pID)) return SendClientMessage(playerid,-1,"Verwende: /kennschild [CarID] [Preis] [KennschildName (max. 4Zahlen)] [playerID]");
if(pID == playerid) return SendClientMessage(playerid,-1, "Hinweis: Du kannst Dir selber kein Kennschild geben");
if(!IsPlayerInRangeOfPoint(playerid,5.0,919.3960,-1264.7429,15.1719))return SendClientMessage(playerid,-1,"Hinweis: Du bist nicht beim TÜV (Ordnungsamt Base)");
if(kszahlen > 9999) return SendClientMessage(playerid,-1,"Hinweis: Maximal nur 4 Zahlen");
if(kspreis > GetPlayerMoney(pID))return SendClientMessage(playerid,-1,"Hinweis: Soviel Geld hat der Spieler nicht!");
if(kspreis > 100000 || kspreis < 1) return SendClientMessage(playerid,-1,"Hinweis: Maximal nur 100.000$");
if(sCarInfo[CarID][pKey] != 1)
{
if(sCarInfo[CarID][CarSchild] == 0)
{
for(new i; i < MAX_VEHICLES; i++)
{
format(str,sizeof(str),"DSZ-%i",kszahlen);
if(!strcmp(sCarInfo[i][CarSchildName],str)) return SendClientMessage(playerid,-1,"Hinweis: Das Kennzeichen gibt es schon!");
}
SetVehicleNumberPlate(CarID,str);
GivePlayerMoney(sCarInfo[CarID][sName], -kspreis);
}
else
{
SendClientMessage(playerid,-1,"Hinweis: Das Auto besitzt schon ein Kennschild!");
}
}
else
{
SendClientMessage(playerid,-1,"Hinweis: Du besitzt kein Auto auf dem ausgewähltem Autoschlüsel!");
}
}
return 1;
}
Ich hab dir auch gleich noch ein halbes Dutzend anderer Fehler behoben.Wenn
GivePlayerMoney(sCarInfo[CarID][sName], -kspreis);
sName ein String ist, dann nutze:
GivePlayerMoney(ReturnPlayerID(sCarInfo[CarID][sName]), -kspreis);
http://forum.sa-mp.de/gta-mult…eschnipsel-53#post1833300 -
OnPlayerDisconnect:
new dbid = mysql_GetInt("accounts","id","Name", SpielerInfo[playerid][pName]);
for(new i=0; i<sizeof(cInfo); i++)
{
if(cInfo[i][dbid_besitzer] == dbid)
{
//Spieler = Besitzer von "i"
}
} -
1.
Nach dem Loop
if(strlen(signFormat) == 0) return SendClientMessage...2. Eine zweite Seite, die die weiteren Schilder anzeigt.
Entweder über einen zweiten Befehl, oder über einen der Buttons. -
Gut, dann ändere den print mal zu:
printf("i: %d -> ID: %d ForSale: %d", i, SignInfo[i][ID], SignInfo[i][ForSale]);Eins von beidem wird entweder immer 0 sein, oder immer nicht 1.
-
Ohne Code nichts los.
-
Dort wo er in den Modus geht:
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(name, sizeof(name), "[NMR]%s");
SetPlayerName(playerid, name);Dort wo er beendet:
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
strdel(name, 0, 5);
SetPlayerName(playerid, name); -
stock ShowSigns(playerid)
{
new signFormat[800];
new signLocation[30];
for(new i=0;i<sizeof(SignInfo);i++)
{
printf("i: %d", i);
if(SignInfo[i][ID] == 0)continue;
if(SignInfo[i][ForSale] != 1) continue;
printf("passed.");
Get3DZoneForCoords(signLocation, sizeof(signLocation), SignInfo[i][x], SignInfo[i][y], SignInfo[i][z]);
print(signLocation);
format(signFormat,sizeof(signFormat),"%s{FFFFFF}ID: {FF9900}%i {FFFFFF}|| Location: {FF9900}%s {FFFFFF}|| Price: {FF9900}%s\n",signFormat,SignInfo[i][ID],signLocation,FM(SignInfo[i][Price]));
print(signFormat);
}
ShowPlayerDialog(playerid,48,DIALOG_STYLE_LIST,"Available billboards",signFormat,"Select","Back");
return 1;
}
Was steht im Log?lukas1177: Nicht dein Ernst, oder?
Kaliber: Die Zeile an sich hat schon fast 100 Zeichen, wenn er also mehr als 10 Schilder hat, dann wird er sogar mehr als die 800 brauchen. -
public prison()
zu:
forward prison();
public prison()Und bei den
SetPlayerPos(pID,//koordinate vom AP);solltest du natürlich auch etwas eintragen, das versteht sich aber hoffentlich von selbst.