Danke, habs auch voll übersehen xD
/e
Danke, habs auch voll übersehen xD
/e
Ist doch der gleiche Code?
Ist doch der gleiche Code?
Stimmt, so ist es richtig. Mit Komma kompiliert er zwar, aber der Code würde nicht funktionieren. Habe meinen Code angepasst.
Wollte jetzt keinen extra Thread machen, aber wieso kommt dieser Error?
CodeAlles anzeigenstock IsNummeric(string[]) { for(new i=0,j=strlen(string),i<j;++) { if((string[i] > '9' || string[i] < '0'))return 0; } return 1; } C:\Users\xxx\OneDrive\Desktop\Selfmade\gamemodes\selfmade.pwn(14221) : error 010: invalid function or declaration Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 1 Error.
Moin,
hat jemand noch die TimestampToDate Funktion ? Die die ich gefunden habe hat leider keine Einrückung mehr (Beitrag von 2014).
MfG
Moin,
hat jemand noch die TimestampToDate Funktion ? Die die ich gefunden habe hat leider keine Einrückung mehr (Beitrag von 2014).
MfG
https://github.com/Agneese-Sai…er/filterscripts/gban.pwn
?
Hab ich auch schon probiert zeigt leider komplett andere Tage an also z.B. anstatt den 6.12 dann 11.10.
Hier das Original von Jochemd: https://pastebin.com/7LQB5Ki1
Bitte beachte, dass du in Zeile 89 das "month" zu "month-1" ändern musst, sonst gibt es im Dezember Probleme.
Moin,
Gibt es eine Möglichkeit an die Koordinaten eines Pickup's zu kommen?
Ich möchte wenn ein Benutzer in der Nähe eines Pickup's ist, etwas passiert.
new pickup;
public OnGameModeInit() {
pickup = CreatePickup(Model, Type, X, Y, Z, Virtual World);
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid) {
if (pickupid == pickup) {
if (IsPlayerInRangeOfPoint(playerid, pickupX, pickupY, pickupZ)) {
// etwas passiert
}
}
return 1;
}
Alles anzeigen
Prinzipiell will ich danach noch die Taste-Abfragen, aber dass ist erstmal nicht wichtig.
Wie kann ich ohne #define oder enum wo ich vorab alles initialisiere die Pickup-Daten abrufen?
Oder muss ich es alles per Code festlegen?
Grüße
Meine SAMP-Zeiten liegen zwar in der Vergangenheit, aber mir ist keine andere Variante bekannt.
Wirst wohl oder übel auf einen Array zurück greifen müssen (wenn kein anderer da eine andere Idee hat).
Alles anzeigenMoin,
Gibt es eine Möglichkeit an die Koordinaten eines Pickup's zu kommen?
Ich möchte wenn ein Benutzer in der Nähe eines Pickup's ist, etwas passiert.
CodeAlles anzeigennew pickup; public OnGameModeInit() { pickup = CreatePickup(Model, Type, X, Y, Z, Virtual World); return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { if (pickupid == pickup) { if (IsPlayerInRangeOfPoint(playerid, pickupX, pickupY, pickupZ)) { // etwas passiert } } return 1; }
Prinzipiell will ich danach noch die Taste-Abfragen, aber dass ist erstmal nicht wichtig.
Wie kann ich ohne #define oder enum wo ich vorab alles initialisiere die Pickup-Daten abrufen?
Oder muss ich es alles per Code festlegen?
Grüße
Du musst Model Type X Y Z Virtual word ersetzen.
#define MAX_PICKUP_ENUM 15
enum E_PICKUP{
pID,
Float:pPos[3],
pInt,
pVW
}
new PickupInfo[MAX_PICKUP_ENUM][E_PICKUP] = {
{1, X, Y, Z, -1, -1},
{2, X, Y, Z, -1, -1},
{3, X, Y, Z, -1, -1},
};
OnGameModeInit:
for(new i = 0; i < MAX_OICKUP_ENUM; i++)
PickupInfo[i][pID] = CreatePickup(...);
public OnPlayerPickUpPickup(playerid, pickupid)
{
for(new i = 0; i < MAX_PICKUP_ENUM; i++)
{
if(pickupid == PickupInfo[i][pID])
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, PickupInfo[i][pPox][0], PickupInfo[i][pPox][1], PickupInfo[i][pPox][2]))
// hier passiert dann wenn er in diesem pickup ist}
} return 1;}
Alles anzeigen
ACHTUNG: Das ist kein Final Code, das ist nur ein Anstoß wie der Code aussehen könnte. (Sehr wahrscheinlich wird der Code so 1:1 nicht Funktionieren)
// Edit
Bist schon bissel Lost, oder? xD
Ihm ist klar das er "X, Y, Z" und Co ersetzten muss, es ist ein Beispiel Code....
Alles anzeigenCodeAlles anzeigen#define MAX_PICKUP_ENUM 15 enum E_PICKUP{ pID, Float:pPos[3], pInt, pVW } new PickupInfo[MAX_PICKUP_ENUM][E_PICKUP] = { {1, X, Y, Z, -1, -1}, {2, X, Y, Z, -1, -1}, {3, X, Y, Z, -1, -1}, }; OnGameModeInit: for(new i = 0; i < MAX_OICKUP_ENUM; i++) PickupInfo[i][pID] = CreatePickup(...); public OnPlayerPickUpPickup(playerid, pickupid) { for(new i = 0; i < MAX_PICKUP_ENUM; i++) { if(pickupid == PickupInfo[i][pID]) { if(IsPlayerInRangeOfPoint(playerid, 5.0, PickupInfo[i][pPox][0], PickupInfo[i][pPox][1], PickupInfo[i][pPox][2])) // hier passiert dann wenn er in diesem pickup ist} } return 1;}
ACHTUNG: Das ist kein Final Code, das ist nur ein Anstoß wie der Code aussehen könnte. (Sehr wahrscheinlich wird der Code so 1:1 nicht Funktionieren)
// Edit
Bist schon bissel Lost, oder? xD
Ihm ist klar das er "X, Y, Z" und Co ersetzten muss, es ist ein Beispiel Code....
Bin kein Hellseher das ich weiß ob ihm das klar ist wenn er sein Problem nicht deutlich erklärt, soll er auch nicht damit rechnen das man ihm weiterhelfen kann.
Und du brauchst eigentlich keine IsPlayerInRangOfPoint abfrage, da es die Pickupid nur einmal gibt und diese kann man nur an einem punkt aufsammeln.
Hallo,
habe 3D Texte erstellt und die sollen Ping/FPS/Packetloss für andere Spieler anzeigen.
Funktioniert nicht wie gewollt und ohne SA:MP Wiki ist einfach alles scheiße, danke Kalkor.
Gibt's ja 3D Text Global und Player 3D Text, für die globalen gibt's Attach3DTextLabelToPlayer(Text3D:id, playerid, Float:OffsetX, Float:OffsetY, Float:OffsetZ) für die Player Variante finde ich leider nichts.
Wo liegt mein Fehler?
new pFPS[MAX_PLAYERS],
pDrunkLevelLast[MAX_PLAYERS],
PlayerText3D:pInfos2[MAX_PLAYERS],
bool:labelinfoscreated[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
labelinfoscreated[playerid] = false;
printf("LabelInfoCreated = %i", labelinfoscreated[playerid]);
#if defined ping_OnPlayerConnect
return ping_OnPlayerConnect(playerid);
#else
return 1;
#endif
}
public OnPlayerDisconnect(playerid, reason)
{
labelinfoscreated[playerid] = false;
printf("LabelInfoCreated = %i", labelinfoscreated[playerid]);
DeletePlayer3DTextLabel(playerid, pInfos2[playerid]);
#if defined ping_OnPlayerDisconnect
return ping_OnPlayerDisconnect(playerid,reason);
#else
return 1;
#endif
}
public OnPlayerSpawn(playerid)
{
DeletePlayer3DTextLabel(playerid, pInfos2[playerid]);
if(labelinfoscreated[playerid] == false)
{
labelinfoscreated[playerid] = true;
pInfos2[playerid] = CreatePlayer3DTextLabel(playerid,"",-1 ,0.0,0.0,-0.7,15.0);
}
printf("LabelInfoCreated = %i", labelinfoscreated[playerid]);
#if defined ping_OnPlayerSpawn
return ping_OnPlayerSpawn(playerid);
#else
return 1;
#endif
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(labelinfoscreated[playerid] == true)
{
DeletePlayer3DTextLabel(playerid, pInfos2[playerid]);
labelinfoscreated[playerid] = false;
}
printf("LabelInfoCreated = %i", labelinfoscreated[playerid]);
#if defined ping_OnPlayerDeath
return ping_OnPlayerDeath(playerid, killerid, reason);
#else
return 1;
#endif
}
public OnPlayerUpdate(playerid)
{
new drunknew;
drunknew = GetPlayerDrunkLevel(playerid);
if (drunknew < 100)
{
SetPlayerDrunkLevel(playerid, 2000);
}
else
{
if (pDrunkLevelLast[playerid] != drunknew)
{
new wfps = pDrunkLevelLast[playerid] - drunknew;
if ((wfps > 0) && (wfps < 200))
pFPS[playerid] = wfps;
pDrunkLevelLast[playerid] = drunknew;
}
}
if(IsPlayerConnected(playerid))
{
new pInfosStr[90];
format(pInfosStr, sizeof pInfosStr, "{%06x}Ping: {FFFFFF}%d\n{%06x}FPS: {FFFFFF}%d\n{%06x}PL: {FFFFFF}%0.2f", GetPlayerColor(playerid) >>> 8, GetPlayerPing(playerid), GetPlayerColor(playerid) >>> 8, pFPS[playerid], GetPlayerColor(playerid) >>> 8, GetPlayerPacketLoss(playerid));
UpdatePlayer3DTextLabelText(playerid, pInfos2[playerid], 0xFFFFFFFF, pInfosStr);
}
#if defined ping_OnPlayerUpdate
return ping_OnPlayerUpdate(playerid);
#else
return 1;
#endif
}
Alles anzeigen
Alles anzeigenHallo,
habe 3D Texte erstellt und die sollen Ping/FPS/Packetloss für andere Spieler anzeigen.
Funktioniert nicht wie gewollt und ohne SA:MP Wiki ist einfach alles scheiße, danke Kalkor.
Gibt's ja 3D Text Global und Player 3D Text, für die globalen gibt's Attach3DTextLabelToPlayer(Text3D:id, playerid, Float:OffsetX, Float:OffsetY, Float:OffsetZ) für die Player Variante finde ich leider nichts.
Wo liegt mein Fehler?
CodeAlles anzeigennew pFPS[MAX_PLAYERS], pDrunkLevelLast[MAX_PLAYERS], PlayerText3D:pInfos2[MAX_PLAYERS], bool:labelinfoscreated[MAX_PLAYERS]; public OnPlayerConnect(playerid) { labelinfoscreated[playerid] = false; printf("LabelInfoCreated = %i", labelinfoscreated[playerid]); #if defined ping_OnPlayerConnect return ping_OnPlayerConnect(playerid); #else return 1; #endif } public OnPlayerDisconnect(playerid, reason) { labelinfoscreated[playerid] = false; printf("LabelInfoCreated = %i", labelinfoscreated[playerid]); DeletePlayer3DTextLabel(playerid, pInfos2[playerid]); #if defined ping_OnPlayerDisconnect return ping_OnPlayerDisconnect(playerid,reason); #else return 1; #endif } public OnPlayerSpawn(playerid) { DeletePlayer3DTextLabel(playerid, pInfos2[playerid]); if(labelinfoscreated[playerid] == false) { labelinfoscreated[playerid] = true; pInfos2[playerid] = CreatePlayer3DTextLabel(playerid,"",-1 ,0.0,0.0,-0.7,15.0); } printf("LabelInfoCreated = %i", labelinfoscreated[playerid]); #if defined ping_OnPlayerSpawn return ping_OnPlayerSpawn(playerid); #else return 1; #endif } public OnPlayerDeath(playerid, killerid, reason) { if(labelinfoscreated[playerid] == true) { DeletePlayer3DTextLabel(playerid, pInfos2[playerid]); labelinfoscreated[playerid] = false; } printf("LabelInfoCreated = %i", labelinfoscreated[playerid]); #if defined ping_OnPlayerDeath return ping_OnPlayerDeath(playerid, killerid, reason); #else return 1; #endif } public OnPlayerUpdate(playerid) { new drunknew; drunknew = GetPlayerDrunkLevel(playerid); if (drunknew < 100) { SetPlayerDrunkLevel(playerid, 2000); } else { if (pDrunkLevelLast[playerid] != drunknew) { new wfps = pDrunkLevelLast[playerid] - drunknew; if ((wfps > 0) && (wfps < 200)) pFPS[playerid] = wfps; pDrunkLevelLast[playerid] = drunknew; } } if(IsPlayerConnected(playerid)) { new pInfosStr[90]; format(pInfosStr, sizeof pInfosStr, "{%06x}Ping: {FFFFFF}%d\n{%06x}FPS: {FFFFFF}%d\n{%06x}PL: {FFFFFF}%0.2f", GetPlayerColor(playerid) >>> 8, GetPlayerPing(playerid), GetPlayerColor(playerid) >>> 8, pFPS[playerid], GetPlayerColor(playerid) >>> 8, GetPlayerPacketLoss(playerid)); UpdatePlayer3DTextLabelText(playerid, pInfos2[playerid], 0xFFFFFFFF, pInfosStr); } #if defined ping_OnPlayerUpdate return ping_OnPlayerUpdate(playerid); #else return 1; #endif }
Player 3D Text Label kannst du nicht Attachen.
Und wenn ich das richtig verstanden hab dann hast du da einen denkfehler drin.
Wenn du für andere Spieler Ping, FPS & Paketverlust anzeigen willst brauchst du ganz normale Text Label die du an den jeweiligen Spieler attached.
Okay, hab's jetzt umgestellt, kann Sie leider immer noch nicht sehen.
//Ping, FPS & Packetloss 3D Textlabel
#include <a_samp>
new pFPS[MAX_PLAYERS],
pDrunkLevelLast[MAX_PLAYERS],
Text3D:pInfos2[MAX_PLAYERS],
bool:labelinfoscreated[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
labelinfoscreated[playerid] = false;
printf("LabelInfoCreated = %i", labelinfoscreated[playerid]);
#if defined ping_OnPlayerConnect
return ping_OnPlayerConnect(playerid);
#else
return 1;
#endif
}
public OnPlayerDisconnect(playerid, reason)
{
labelinfoscreated[playerid] = false;
printf("LabelInfoCreated = %i", labelinfoscreated[playerid]);
Delete3DTextLabel(pInfos2[playerid]);
#if defined ping_OnPlayerDisconnect
return ping_OnPlayerDisconnect(playerid,reason);
#else
return 1;
#endif
}
public OnPlayerSpawn(playerid)
{
Delete3DTextLabel(pInfos2[playerid]);
if(labelinfoscreated[playerid] == false)
{
labelinfoscreated[playerid] = true;
pInfos2[playerid] = Create3DTextLabel("",-1 ,0.0,0.0,0.0,25.0,0, 1);
Attach3DTextLabelToPlayer(pInfos2[playerid], playerid, 0.0, 0.0,-0.7);
}
printf("LabelInfoCreated = %i", labelinfoscreated[playerid]);
printf("%i", GetPlayerVirtualWorld(playerid));
#if defined ping_OnPlayerSpawn
return ping_OnPlayerSpawn(playerid);
#else
return 1;
#endif
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(labelinfoscreated[playerid] == true)
{
Delete3DTextLabel(pInfos2[playerid]);
labelinfoscreated[playerid] = false;
}
printf("LabelInfoCreated = %i", labelinfoscreated[playerid]);
#if defined ping_OnPlayerDeath
return ping_OnPlayerDeath(playerid, killerid, reason);
#else
return 1;
#endif
}
public OnPlayerUpdate(playerid)
{
new drunknew;
drunknew = GetPlayerDrunkLevel(playerid);
if (drunknew < 100)
{
SetPlayerDrunkLevel(playerid, 2000);
}
else
{
if (pDrunkLevelLast[playerid] != drunknew)
{
new wfps = pDrunkLevelLast[playerid] - drunknew;
if ((wfps > 0) && (wfps < 200))
pFPS[playerid] = wfps;
pDrunkLevelLast[playerid] = drunknew;
}
}
if(IsPlayerConnected(playerid))
{
new pInfosStr[90];
format(pInfosStr, sizeof pInfosStr, "{%06x}Ping: {FFFFFF}%d\n{%06x}FPS: {FFFFFF}%d\n{%06x}PL: {FFFFFF}%0.2f", GetPlayerColor(playerid) >>> 8, GetPlayerPing(playerid), GetPlayerColor(playerid) >>> 8, pFPS[playerid], GetPlayerColor(playerid) >>> 8, GetPlayerPacketLoss(playerid));
Update3DTextLabelText(pInfos2[playerid], 0xFFFFFFFF, pInfosStr);
}
#if defined ping_OnPlayerUpdate
return ping_OnPlayerUpdate(playerid);
#else
return 1;
#endif
}
Alles anzeigen
Okay, hab's jetzt umgestellt, kann Sie leider immer noch nicht sehen.
CAlles anzeigen//Ping, FPS & Packetloss 3D Textlabel #include <a_samp> new pFPS[MAX_PLAYERS], pDrunkLevelLast[MAX_PLAYERS], Text3D:pInfos2[MAX_PLAYERS], bool:labelinfoscreated[MAX_PLAYERS]; public OnPlayerConnect(playerid) { labelinfoscreated[playerid] = false; printf("LabelInfoCreated = %i", labelinfoscreated[playerid]); #if defined ping_OnPlayerConnect return ping_OnPlayerConnect(playerid); #else return 1; #endif } public OnPlayerDisconnect(playerid, reason) { labelinfoscreated[playerid] = false; printf("LabelInfoCreated = %i", labelinfoscreated[playerid]); Delete3DTextLabel(pInfos2[playerid]); #if defined ping_OnPlayerDisconnect return ping_OnPlayerDisconnect(playerid,reason); #else return 1; #endif } public OnPlayerSpawn(playerid) { Delete3DTextLabel(pInfos2[playerid]); if(labelinfoscreated[playerid] == false) { labelinfoscreated[playerid] = true; pInfos2[playerid] = Create3DTextLabel("",-1 ,0.0,0.0,0.0,25.0,0, 1); Attach3DTextLabelToPlayer(pInfos2[playerid], playerid, 0.0, 0.0,-0.7); } printf("LabelInfoCreated = %i", labelinfoscreated[playerid]); printf("%i", GetPlayerVirtualWorld(playerid)); #if defined ping_OnPlayerSpawn return ping_OnPlayerSpawn(playerid); #else return 1; #endif } public OnPlayerDeath(playerid, killerid, reason) { if(labelinfoscreated[playerid] == true) { Delete3DTextLabel(pInfos2[playerid]); labelinfoscreated[playerid] = false; } printf("LabelInfoCreated = %i", labelinfoscreated[playerid]); #if defined ping_OnPlayerDeath return ping_OnPlayerDeath(playerid, killerid, reason); #else return 1; #endif } public OnPlayerUpdate(playerid) { new drunknew; drunknew = GetPlayerDrunkLevel(playerid); if (drunknew < 100) { SetPlayerDrunkLevel(playerid, 2000); } else { if (pDrunkLevelLast[playerid] != drunknew) { new wfps = pDrunkLevelLast[playerid] - drunknew; if ((wfps > 0) && (wfps < 200)) pFPS[playerid] = wfps; pDrunkLevelLast[playerid] = drunknew; } } if(IsPlayerConnected(playerid)) { new pInfosStr[90]; format(pInfosStr, sizeof pInfosStr, "{%06x}Ping: {FFFFFF}%d\n{%06x}FPS: {FFFFFF}%d\n{%06x}PL: {FFFFFF}%0.2f", GetPlayerColor(playerid) >>> 8, GetPlayerPing(playerid), GetPlayerColor(playerid) >>> 8, pFPS[playerid], GetPlayerColor(playerid) >>> 8, GetPlayerPacketLoss(playerid)); Update3DTextLabelText(pInfos2[playerid], 0xFFFFFFFF, pInfosStr); } #if defined ping_OnPlayerUpdate return ping_OnPlayerUpdate(playerid); #else return 1; #endif }
Du selber kannst Text Label die an dir attached sind nicht sehen, nur andere.
Wenn du dir selber diese Infos Anzeigen willst nimm halt einfach Textdraws.
Ich will die Labels ja auch anderen zeigen und nicht mir selbst -> funktioniert nicht.