Unter OnPlayerEnterVehicle einfach mal fragen ob er beim >einsteigen< im Gangjail ist. Wenn er es ist machste einfach mal "TogglePlayerControllable" auf 0 und dann wieder auf 1 - das bricht dann das einsteigen ab. Und solltest dann noch ne Nachricht schicken das ausbrechen nicht erlaubt ist.
Beiträge von Robert
-
-
SetParkPlatz(playerid,Autohaus);
OnPlayerCarLogin(playerid);- Bitte mal diese beiden schicken.
-
Schöne Idee aber eine verbesserungs Idee:
man sollte es ebenso einstellen können das bestimmtes Wetter Täglich ist. -
Sehr schöne Idee 9/10 Punkten da es nurnoch besser werden könnte durch einen eigenen Interior & durch Lieferwagen wenn es ein Versandzentrum ist.
-
Also Preis ist ja abhängig vom eingestellten Preis - versuch dazu mal sofern es ein Godfather ist "/edit price 1" an dem Haus. Ansonsten halt einfach den Preis in der Variable für den Hauspreis irgendwo im Script umstellbar machen.
Das Gleiche gilt eigtl. auch für "Rent & Miete". Da solltest du dann deine normalen Befehle anwenden.Oder simpel: Server ausschalten und in der MySQL Datenbank die Daten richtig eintragen dann siehst du, ob es am Laden liegt oder an der Speicherung.
-
Nicht sonderlich schwierig und hier ist ein 1A Tutorial: [ SCRIPTING ] MySQL (Installation, Zugriff, Einstellungen, Login & Register Beispiel)
-
if(strcmp(cmd, "/setlohn", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutzung: /setlohn [Spieler ID / Name] [Lohn / Payday]");
return 1;
}
new playa;
playa = ReturnUser(tmp);
new gehalt;
tmp = strtok(cmdtext, idx);
gehalt = strval(tmp);
if (PlayerInfo[playerid][pLeader] >= 1)
{
if(IsPlayerConnected(playa))
{
if(PlayerInfo[playerid][pLeader] == PlayerInfo[playa][pMember] || PlayerInfo[playerid][pLeader] == PlayerInfo[playa][pLeader])
{
if(gehalt < 0 || gehalt > 10000) return SendClientMessage(playerid, COLOR_RED," Der Lohn muss zwischen 0 und 10000 liegen!"); // Hier muss ja sein das "gehalt" unter 0 ist oder über 10.000PlayerInfo[playa][pGehalt] = gehalt;
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "*Du hast %s Gehalt geändert in %d$.", giveplayer, gehalt);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "*%s hat dein Gehalt geändert in %d$.", sendername, gehalt);
SendClientMessage(playa, COLOR_LIGHTBLUE, string);
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Dieser Befehl ist nur für Leader einer Fraktion!");
}
}
return 1;
}
Tomsen: denke mal flüchtigkeitfehler habe einen Kommentar in der "gehalt" zeile gemacht. -
Also
new string[256];
format(string,sizeof(string), "ZU VERKAUFEN!\nName: %s\nBesitzer: Der Staat\nKaufpreis: %d", BTanke[idx][bName], BTanke[idx][bPrice]);
Create3DTextLabel(BTanke[idx][bName], COLOR_RED, BTanke[idx][bPosX], BTanke[idx][bPosY], BTanke[idx][bPosZ], 20.0, 0, 0);
zu
new string[256];
format(string,sizeof(string), "ZU VERKAUFEN!\nName: %s\nBesitzer: Der Staat\nKaufpreis: %d", BTanke[idx][bName], BTanke[idx][bPrice]);
Create3DTextLabel(string, COLOR_RED, BTanke[idx][bPosX], BTanke[idx][bPosY], BTanke[idx][bPosZ], 20.0, 0, 0); // hier das BName zu string ändern sonst wird es nichts!
Lies das von RG mal gründlich dann siehst du das er recht hat & dein Problem gelöst hat. Du würdest mit deiner aktuellen Variante nur den "Name: %s" nutzen bzw was da hin sollte. -
Welche ist deiner Meinung nach denn die gewöhnliche Arena?
-
-
warum eig 2 Threads?!
-
new fraktion = 0;
if(PlayerInfo[playerid][pMember] > 0) fraktion = PlayerInfo[playerid][pMember] - 1;
if(PlayerInfo[playerid][pLeader] > 0) fraktion = PlayerInfo[playerid][pLeader] - 1;
FraktionsKasse[fraktion] += preis/2;
GivePlayerMoney(playerid,preis/2);
SaveFraktionsKassen();Tipp bei Givelicense nutze einfach #defines:
#define KOSTEN_AUTOFÜHRERSCHEIN 5000 // Wären $5000// Unter /givelicense vor der Abfrage mit "driving"
new fraktion = 0;
if(PlayerInfo[playerid][pMember] > 0) fraktion = PlayerInfo[playerid][pMember] - 1;
if(PlayerInfo[playerid][pLeader] > 0) fraktion = PlayerInfo[playerid][pLeader] - 1;// Dazu unter /givelicense in driving:
new preis = KOSTEN_AUTOFÜHRERSCHEIN;
GivePlayerMoney(giveplayerid,-preis);
FraktionsKasse[fraktion] += preis/2;
GivePlayerMoney(playerid,preis/2);
SaveFraktionsKassen();
ungetestet sollte aber so gehn -
Sehr schönes System und zumindest in Version 1 also der mit der Pastebin ist ein Fehler drinne:
- Die Sekunden 0-9 sind immer so angezeigt ( restliche Flaggenzeit1:5
statt
1:05Aber an sich: Top system geht wohl nicht besser
-
new Cops = 0;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pMember] == 1 || PlayerInfo[i][pLeader] == 1 || PlayerInfo[i][pLeader] == 2 || PlayerInfo[i][pMember] == 2 || PlayerInfo[i][pLeader] == 3 || PlayerInfo[i][pMember] == 3)
{
Cops += 3; // Es wird sogar nur ein Cop benötigt wg deinem Script^^
}
}
} -
Kopier den Code mal 1zu1 aus deinem Script und poste ihn erneut - so kann man ihn nicht lesen geschweige denn dir helfen. Bei dem langzeilen Code kann keiner durchblicken und warum sollten die Helfer sich die mühe machen deinen Code zu entziffern.
-
-
Für Selfmade oder Godfather? Sofern es ein Selfmade ist müsstest du uns deine Job Definition geben & sagen was du willst.
-
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 487.9458, -5.9515, 1002.0867);
SetPlayerFacingAngle(playerid, 180); SetPlayerInterior(playerid, 17);
SetPlayerCameraPos(playerid, 487.8283, -11.4869, 1001.7832);
SetPlayerCameraLookAt(playerid, 487.8446, -10.4885, 1001.7479);
switch(classid) {
case 0,1,2,3,4: Team[playerid] = 1;
default: Team[playerid] = 0;
}
if(classid == 0 || classid == 1 || classid == 2 || classid == 3 || classid == 4)
{
SetPlayerColor(playerid, COLOR_GREY);
GameTextForPlayer(playerid, "~w~Yakuza", 1500, 6);
}
else if(classid == 5 || classid == 6 || classid == 7 || classid == 8 || classid == 9)
{
SetPlayerColor(playerid, COLOR_BLUE);
GameTextForPlayer(playerid, "~b~Triaden", 1500, 6);
}
else if(classid == 10 || classid == 11 || classid == 12 || classid == 13 || classid == 14)
{
SetPlayerColor(playerid, COLOR_GSF);
GameTextForPlayer(playerid, "~g~Grove Street", 1500, 6);
}
return 1;
}
1. Code mal übersichtlich.
2. Hier ist kein SetPlayerPos bei den Triaden / Yakuza also ist hier auch nicht die festlegung der Spawn Position.Kuck mal unter "OnPlayerSpawn" bzw sende diesen an uns.
-
stock LoadPlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))//Wir fragen ab ob der angegebene Spieler auch Online ist, und kein NPC ist (nur zur sicherhheit)
{
GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME); //Wir Speichern den Namen des Spielers in der Variable [i]SpielerInfo[playerid][pName][/i]
SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Level" eingetragen ist und Speichern ihn in unserer Variable.
SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Geld" eingetragen ist und Speichern ihn in unserer Variable.
SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Kills" eingetragen ist und Speichern ihn in unserer Variable.
SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Tode" eingetragen ist und Speichern ihn in unserer Variable.
}
return 1;
}stock mysql_GetInt(Table[], Field[], Where[], Is[])
{
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Is, Is);
format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
mysql_query(query);
mysql_store_result();
new sqlint = mysql_fetch_int();
mysql_free_result();
return sqlint;
}
Als erklärung:
mysql_GetInt gibt den Integer zurück, der an der angegebenen Position in der angegebenen Tabelle liegt.- Table[] - Die Tabelle in der der Wert liegt.
- Field[] - Das Feld (die Spalte) in der der Wert liegt.
- Where[] - Das Feld (die Spalte) in der Nach der Bedingung gesucht wird.
- Is[] - Die bedingung um die richtige Reihe zu finden.
mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName])stock SavePlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) //wir überprüfen ob der Spieler überhaupt noch Connected ist und ob er nicht ein NPC ist.
{
if(GetPVarInt(playerid,"Eingeloggt") == 1) //Und hier ob er noch eingeloggt ist.
{
//Nun speichern wir die Daten in der Datenbank.
mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
}
}
return 1;
}
Und die Funktionen mysql_SetInt, mysql_SetFloat und mysql_SetString kommen direkt da drunter (mysql_SetString benutzen wir zwar nicht, aber falls ihr mal strings speichern wollt habt ihr diese direkt parat).
stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
{
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Where2, Where2);
format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
mysql_query(query);
return true;
}Als erklärung:
mysql_SetInt "Updatet" den Wert der an der Angegebenen Stelle in der Tabelle liegt, auf den neuen Wert den wir angegeben haben.
Table[] - Die Tabelle in der der Wert verändert werden soll.
Field[] - Das Feld (die Spalte) in der der Wert verändert werden soll.
To - Der Wert der an der in das Angegebene feld eingetragen werden soll.
Where[] - Das Feld (die Spalte) in der Nach der Bedingung gesucht wird.
Where2[] - Die bedingung um die richtige Reihe zu finden.[pwn]mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
heisst also, wir gehen in die Tabelle "accounts", und ändern den Wert der in der Spalte "Level" steht, auf den Wert den wir angegebene haben (SpielerInfo[playerid][pLevel]), da wo in der Spalte "Name" unsere bedingung (SpielerInfo[playerid][pName]) steht.</a_mysql></a_mysql>Das ist aus dem Tutorial Link von Tround also nutze mal dein Gehirn, lies das Tutorial durch und versuche es damit zu schaffen. Fragen kannst du danach ja immernoch stellen.
-
Ist es ein bekanntes Fahrzeug System wie z.B. DT_Car oder Ping's Autohaus ? Sende doch mal die Daten zum speichern & laden der Fahrzeuge. Also die Scriptzeilen davon.