Beiträge von Campbell
-
-
Verwende den Code entweder unter OnPlayerStateChange oder verwende GetPlayerState(playerid).
-
Semikolon vergessen und du musst schon definieren, wessen Daten gespeichert werden sollen.
public OnPlayerDisconnect(playerid, reason)
{
SpielerSpeichern(playerid);
new pname[MAX_PLAYER_NAME], string[39 + MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
switch(reason)
{
case 0: format(string, sizeof(string), "%s hat den Server verlassen. (Timeout)", pname);
case 1: format(string, sizeof(string), "%s hat den Server verlassen. (Verlassen)", pname);
}
SendClientMessageToAll(BLAU, string);
return 1;
} -
Ein ganzer Code wäre sinnvoller als solche Bruchteile, da kann man recht wenig erkennen. Dennoch konnte ich soweit auf Folgendes schließen.
new idx, sendername[MAX_PLAYER_NAME];
-
new Float:PayNSprays[][6] = {
{1963.0222, 2162.1836, 10.8203, 1974.9702, 2162.5818, 11.0703},
{1963.0222, 2162.1836, 10.8203, 1974.9702, 2162.5818, 11.0703}Also nur hier muss ich die neuen Koordinaten eintragen?. Und der Rest geht von selbst.
Ganz genau, die Koordinaten sind oben im Quellcode beschrieben. -
Der String name ist NULL und du musst schon deine Variable skin verwenden:
stock Speichern(playerid)
{
new name[MAX_PLAYER_NAME], skin = GetPlayerSkin(playerid);
GetPlayerName(playerid, name, sizeof(name));
mysql_SetInt("accounts", "Skin", skin, "Name", name);
return 1;
} -
Du wirst unendlich viele in die Liste ganz oben eintragen können, da die Länge der Liste berechnet wird.
-
Es wird nicht ausgelesen.
Er gibt dem Spieler immer die Summe die man beim register bekommt -.-
Wenn dem Spieler Geld gegeben wird, dann muss auch etwas ausgelesen werden. Geh mal ins Spiel, ändere dein Geld und log dich aus. Geh sicher, dass du SpielerSpeichern() in OnPlayerDisconnect hast, damit deine Daten auch gespeichert werden. -
/* Array mit sechs Einträgen:
1 - 3: Eingangskoordinaten.
4 - 6: Pay'n'Spray Koordinaten. */
new Float:PayNSprays[][6] = {
{1963.0222, 2162.1836, 10.8203, 1974.9702, 2162.5818, 11.0703},
{1963.0222, 2162.1836, 10.8203, 1974.9702, 2162.5818, 11.0703}
};/* Array für alle Spieler setzen, um Daten des Timers zu
speichern. - Ansonsten wird der Timer schneller sein,
wenn mehr Spieler connected sind. */
new PNSTimerData[MAX_PLAYERS];ocmd:repair(playerid, params[])
{
for(new i; i < sizeof(PayNSprays); i++)
{
if(IsPlayerInRangeOfPoint(playerid, 10, PayNSprays[i][0], PayNSprays[i][1], PayNSprays[i][2]))
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, FRot, "Du musst in einem Auto sein, um den Pay'n'Spray zu nutzen.");
new vehicleid = GetPlayerVehicleID(playerid);
SetVehiclePos(vehicleid, PayNSprays[i][3], PayNSprays[i][4], PayNSprays[i][5]);
/* Daten dem Array zuweisen und Timer Starten (Hier: 5 Sekunden). */
PNSTimerData[playerid] = SetTimerEx("PNSTimer", 5000, false, "dd", playerid, i);
return 1;
}
}
SendClientMessage(playerid, FRot, "Du bist nicht in der nehe eines PayN Spray's");
return 1;
}/* Public's müssen ge'forwarded werden. Hier 'playerid' nicht vergessen, da wir die benötigen. */
forward PNSTimer(playerid, id);
public PNSTimer(playerid, id) // Callback des Timers deklarieren.
{
/* Auto zu den neuen Koordinaten teleportieren. */
SetVehiclePos(GetPlayerVehicleID(playerid), PayNSprays[id][0], PayNSprays[id][1], PayNSprays[id][2]);
GivePlayerMoney(playerid, -2000);
GameTextForPlayer(playerid, "-2000 $", 3000, 3);
} -
Schaue nach, ob das Verzeichnis, in dem du die Datei speichern willst auch existiert. Ansonsten kannst du mir auch mal Daten für Teamviewer senden, damit ich kurz draufschauen kann.
-
Was du eben machen musst ist eine Variable mitzählen lassen, die den Vorgang bei 20 stoppt und dir den Dialog erstellt. Dabei musst du nun bei dem Dialog in OnDialogResponse die nächsten 20 Mitglieder auslesen und zeigen. Dabei wäre es sinnvoll eine globale Variable mitzählen zu lassen, sodass du alles in einem Dialog handhaben kannst und nicht sehr viele Dialoge erstellen musst. Ein sinnvoller Ansatz wäre hier auch mysql_num_rows() zu verwenden, um zu schauen, wie der Dialog aussehen wird.
-
Benutzt du evt. einer dieser Definitionen in deinem Script oder hast du etwas undefined? Falls nicht lade dir einfach den Streamer nochmals, da der Streamer funktioniert und alles definiert ist: http://code.google.com/p/samp-….rar&can=2&q=label%3A0.3e
-
Mein Fehler, so müsste es funktionieren.
/* Array für alle Spieler setzen, um Daten des Timers zu
speichern. - Ansonsten wird der Timer schneller sein,
wenn mehr Spieler connected sind. */
new PNSTimerData[MAX_PLAYERS];ocmd:repair(playerid, params[])
{
if(!IsPlayerInRangeOfPoint(playerid, 10, 1963.0222, 2162.1836, 10.8203)) return SendClientMessage(playerid, FRot, "Du bist nicht in der nehe eines PayN Spray's");
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, FRot, "Du musst in einem Auto sein, um den Pay'n'Spray zu nutzen.");
new vehicleid = GetPlayerVehicleID(playerid);
SetVehiclePos(vehicleid, 1974.9702, 2162.5818, 11.0703);
/* Daten dem Array zuweisen und Timer Starten (Hier: 5 Sekunden). */
PNSTimerData[playerid] = SetTimerEx("PNSTimer", 5000, false, "d", playerid);
return 1;
}/* Public's müssen ge'forwarded werden. Hier 'playerid' nicht vergessen, da wir die benötigen. */
forward PNSTimer(playerid);
public PNSTimer(playerid) // Callback des Timers deklarieren.
{
/* Auto zu den neuen Koordinaten teleportieren. */
SetVehiclePos(GetPlayerVehicleID(playerid), 1963.0222, 2162.1836, 10.8203);
GivePlayerMoney(playerid, -2000);
GameTextForPlayer(playerid, "-2000 $", 3000, 3);
} -
Lass dir mal dGunData[f][ObjID] ausgeben, nachdem das Objekt erstellt wurde, um zu schauen, ob überhaupt ein Objekt erstellt wird. Ebenfalls, welche Waffe lässt du denn fallen?
-
/* Array für alle Spieler setzen, um Daten des Timers zu
speichern. - Ansonsten wird der Timer schneller sein,
wenn mehr Spieler connected sind. */
new PNSTimerData[MAX_PLAYERS];ocmd:repair(playerid, params[])
{
if(!IsPlayerInRangeOfPoint(playerid, 10, 1963.0222, 2162.1836, 10.8203)) return SendClientMessage(playerid, FRot, "Du bist nicht in der nehe eines PayN Spray's");
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, FRot, "Du musst in einem Auto sein, um den Pay'n'Spray zu nutzen.");
new vehicleid = GetPlayerVehicleID(playerid);
SetVehiclePos(vehicleid, 1974.9702, 2162.5818, 11.0703);
/* Daten dem Array zuweisen und Timer Starten (Hier: 5 Sekunden). */
PNSTimerData[playerid] = SetTimerEx("PNSTimer", 5000, "d", playerid);
return 1;
}/* Public's müssen ge'forwarded werden. Hier 'playerid' nicht vergessen, da wir die benötigen. */
forward PNSTimer(playerid);
public PNSTimer(playerid) // Callback des Timers deklarieren.
{
/* Auto zu den neuen Koordinaten teleportieren. */
SetVehiclePos(GetPlayerVehicleID(playerid), 1963.0222, 2162.1836, 10.8203);
GivePlayerMoney(playerid, -2000);
GameTextForPlayer(playerid, "-2000 $", 3000, 3);
} -
Wird es denn überhaupt in der Datei gespeichert oder wird es nur nicht ausgelesen bzw. gesetzt? Und wann und wo benutzt du SpielerSpeichern(playerid)?
-
Ich habe es nun etwa zehn mal gesagt: Und das Ganze muss in OnPlayerStateChange und nicht in OnPlayerEnterVehicle!
-
Benutze return nicht so oft, wenn du es garnicht brauchst. Ebenfalls musst du die Position des Spielers nicht setzen wenn er mit dem Auto teleportiert wird und schon gar nicht musst du ihn ins Auto setzen, wenn er schon drin ist. Ebenfalls solltest du klar deine Variablen definieren und einen Wert zuweisen. Die vehicleid ist die ID des Autos, in dem der Spieler sich befindet. Das wird hier nun zugewiesen, wenn der Spieler in der Nähe des Pay'n'Sprays ist und in einem Auto sitzt.
ocmd:repair(playerid,params[])
{
if(IsPlayerInRangeOfPoint(playerid, 10, 1963.0222, 2162.1836, 10.8203))
{
if(IsPlayerInAnyVehicle(playerid))
{
new vehicleid == GetPlayerVehicleID(playerid);
SetVehiclePos(vehicleid, 1974.9702, 2162.5818, 11.0703);
GivePlayerMoney(playerid, -2000);
GameTextForPlayer(playerid, "-2000 $", 3000, 3);
}
}
else
{
SendClientMessage(playerid, FRot, "Du bist nicht in der nähe eines Pay N Spray's.");
}
return 1;
} -
new PlayerText:TextDraw;OnPlayerConnect(playerid)
{
// Erstelle den TextDraw hier, als Beispiel wird die Variable PlayerText:TextDraw zum Zuweisen der ID benutzt.
}stock SetTextDrawPlayerScore(playerid)
{
new score[5];
valstr(score, GetPlayerScore(playerid));
PlayerTextDrawHide(playerid, TextDraw);
PlayerTextDrawSetString(TextDraw, score);
PlayerTextDrawShow(playerid, TextDraw);
} -
Es ist nicht einfach xampp abgeschmiert. Da war bisschen mehr dahinter aber jetzt sollte es gehen
also hinder Alter usw. muss auch noch die länge oder?
Ein Integer hat keine bestimmte Länge, es hat nur ein Maximum. Daher brauchst du allem, was etwas mit Zahlen zu tun hat, keine Länge zuweisen.