A képet a Képfeltöltés.hu tárolja.
http://www.kepfeltoltes.huvalaki nem tudja h ezt miért írja?
Pawno script :
// [FS]Property-System by =>Sandra<=
// Magyarosítást és kisebb átalakításokat készítette: Adamo(adams94)
#include <a_samp>
#include <dini>
#define MAX_PROPERTIES 100
#define MAX_PROPERTIES_PER_PLAYER 4
#define UNBUYABLETIME 15
#define ENABLE_LOGIN_SYSTEM 1
#define ENABLE_MAP_ICON_STREAMER 1
#define REGISTER_COMMAND \"/register\"
#define LOGIN_COMMAND \"/login\"
new PropertiesAmount;
new MP;
enum propinfo
{
PropName[64],
Float:PropX,
Float:PropY,
Float:PropZ,
PropIsBought,
PropUnbuyableTime,
PropOwner[MAX_PLAYER_NAME],
PropValue,
PropEarning,
PickupNr,
}
new PropInfo[MAX_PROPERTIES][propinfo];
new PlayerProps[MAX_PLAYERS];
new EarningsForPlayer[MAX_PLAYERS];
new Logged[MAX_PLAYERS];
public OnFilterScriptInit()
{
LoadProperties();
MP = GetMaxPlayers();
for(new i; i<MP; i++)
{
if(IsPlayerConnected(i))
{
new pName[MAX_PLAYER_NAME];
GetPlayerName(i, pName, MAX_PLAYER_NAME);
for(new propid; propid < PropertiesAmount; propid++)
{
if(PropInfo[propid][PropIsBought] == 1)
{
if(strcmp(PropInfo[propid][PropOwner], pName, true)==0)
{
EarningsForPlayer += PropInfo[propid][PropEarning];
PlayerProps++;
}
}
}
}
}
SetTimer(\"UpdateUnbuyableTime\", 60000, 1);
#if ENABLE_MAP_ICON_STREAMER == 1
SetTimer(\"MapIconStreamer\", 500, 1);
#endif
SetTimer(\"PropertyPayout\", 60000, 1);
return 1;
}
public OnFilterScriptExit()
{
SaveProperties();
return 1;
}
public OnPlayerConnect(playerid)
{
PlayerProps[playerid] = 0;
Logged[playerid] = 0;
EarningsForPlayer[playerid] = 0;
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
for(new propid; propid < PropertiesAmount; propid++)
{
if(PropInfo[propid][PropIsBought] == 1)
{
if(strcmp(PropInfo[propid][PropOwner], pName, true)==0)
{
EarningsForPlayer[playerid] += PropInfo[propid][PropEarning];
PlayerProps[playerid]++;
}
}
}
#if ENABLE_LOGIN_SYSTEM == 0
if(PlayerProps[playerid] > 0)
{
new str[128];
format(str, 128, \"Van %d házad. /myh ezzel a parancsal megnézheted.\", PlayerProps[playerid]);
SendClientMessage(playerid, 0x99FF66AA, str);
}
#endif
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256], idx, tmp[256];
cmd = strtok(cmdtext, idx);
//------------------------------------------------------------------------------
if(strcmp(cmd, \"/helphouse\", true)==0 || strcmp(cmd, \"/helph\", true)==0)
{
SendClientMessage(playerid, 0xFFFF00AA, \"|=========================================================|\");
new str[128];
#if ENABLE_LOGIN_SYSTEM == 1
format(str, 128, \"%s - Regisztráció, hogy legyenek saját házaid.\", REGISTER_COMMAND);
SendClientMessage(playerid, 0x66CCFFAA, str);
format(str, 128, \"%s - Bejelentkezés.\", LOGIN_COMMAND);
SendClientMessage(playerid, 0x66CCFFAA, str);
#endif
SendClientMessage(playerid, 0x33AA33AA, \"/buyhouse, /buyh - Házvásárlás.\");
SendClientMessage(playerid, 0x33AA33AA, \"/sellhouse, /sellh - Házeladás.\");
SendClientMessage(playerid, 0x33AA33AA, \"/myhouse, /myh - Házaid megtekintése.\");
// if(IsPlayerAdmin(playerid))
// {
// SendClientMessage(playerid, 0x66CCFFAA, \"/sellallproperties [Admin Only] ==>> To sell all properties for all players\");
// }
SendClientMessage(playerid, 0xFFFF00AA, \"|=========================================================|\");
return 1;
}
//------------------------------------------------------------------------------
if(strcmp(cmd, \"/buyhouse\", true)==0 || strcmp(cmd, \"/buyh\", true)==0)
{
new str[128];
#if ENABLE_LOGIN_SYSTEM == 1
if(Logged[playerid] == 0)
{
format(str, 128, \"Elöbb jelentkezbe: %s\", LOGIN_COMMAND);
SendClientMessage(playerid, 0xFF0000AA, str);
return 1;
}
#endif
new propid = IsPlayerNearProperty(playerid);
if(propid == -1)
{
SendClientMessage(playerid, 0xFF0000AA, \"Nincs ház a közelben!\");
return 1;
}
if(PlayerProps[playerid] == MAX_PROPERTIES_PER_PLAYER)
{
format(str, 128, \"Neked már van %d házad, nem tudsz többet venni!!\", PlayerProps[playerid]);
SendClientMessage(playerid, 0xFF0000AA, str);
return 1;
}
if(PropInfo[propid][PropIsBought] == 1)
{
new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
if(ownerid == playerid)
{
SendClientMessage(playerid, 0xFF0000AA, \"Ez a ház már a tied!\");
return 1;
}
else
{
if(PropInfo[propid][PropUnbuyableTime] > 0)
{
format(str, 128, \"Ez a ház %s tulajdona!. Várj %d percet és elárverezik!\", PropInfo[propid][PropOwner], PropInfo[propid][PropUnbuyableTime]);
SendClientMessage(playerid, 0xFF0000AA, str);
return 1;
}
}
}
if(GetPlayerMoney(playerid) < PropInfo[propid][PropValue])
{
format(str, 128, \"Nincs elég pénzed!(%d$ szükséges!)\", PropInfo[propid][PropValue]);
SendClientMessage(playerid, 0xFF0000AA, str);
return 1;
}
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
if(PropInfo[propid][PropIsBought] && PropInfo[propid][PropUnbuyableTime] == 0)
{
new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
format(str, 128, \"%s megvette a házad! \\\"%s\\\". Te 50százalék részvényt kaptál!(%d$)\", pName, PropInfo[propid][PropName], (PropInfo[propid][PropValue]/2));
GivePlayerMoney(ownerid, (PropInfo[propid][PropValue]/2));
SendClientMessage(ownerid, 0xFFFF00AA, str);
PlayerProps[ownerid]--;
}
PropInfo[propid][PropOwner] = pName;
PropInfo[propid][PropIsBought] = 1;
PropInfo[propid][PropUnbuyableTime] = UNBUYABLETIME;
EarningsForPlayer[playerid] += PropInfo[propid][PropEarning];
GivePlayerMoney(playerid, (0-PropInfo[propid][PropValue]));
format(str, 128, \"Megvetted ezt a házat: \\\"%s\\\".Ennyiért: %d$.\", PropInfo[propid][PropName], PropInfo[propid][PropValue]);
SendClientMessage(playerid, 0xFFFF00AA, str);
format(str, 128, \"%s megvette ezt a házat: \\\"%s\\\".\", pName, PropInfo[propid][PropName]);
SendClientMessageToAllEx(playerid, 0xFFFF00AA, str);
PlayerProps[playerid]++;
return 1;
}
//------------------------------------------------------------------------------
if(strcmp(cmd, \"/sellhouse\", true) == 0 || strcmp(cmd, \"/sellh\", true) == 0)
{
new str[128];
#if ENABLE_LOGIN_SYSTEM == 1
if(Logged[playerid] == 0)
{
format(str, 128, \"Elöbb jelentkezbe: %s\", LOGIN_COMMAND);
SendClientMessage(playerid, 0xFF0000AA, str);
return 1;
}
#endif
new propid = IsPlayerNearProperty(playerid);
if(propid == -1)
{
SendClientMessage(playerid, 0xFF0000AA, \"Nincs ház a közelben!\");
return 1;
}
if(PropInfo[propid][PropIsBought] == 1)
{
new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
if(ownerid != playerid)
{
SendClientMessage(playerid, 0xFF0000AA, \"Ez a ház nem a tied!\");
return 1;
}
}
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
format(PropInfo[propid][PropOwner], MAX_PLAYER_NAME, \"Nobody\");
PropInfo[propid][PropIsBought] = 0;
PropInfo[propid][PropUnbuyableTime] = 0;
GivePlayerMoney(playerid, (PropInfo[propid][PropValue]/2));
format(str, 128, \"Eladtad ezt a házad: \\\"%s\\\", ennyiért: %d$\", PropInfo[propid][PropName], PropInfo[propid][PropValue]/2);
SendClientMessage(playerid, 0xFFFF00AA, str);
format(str, 128, \"%s eladta ezt a házat: \\\"%s\\\".\", pName, PropInfo[propid][PropName]);
SendClientMessageToAllEx(playerid, 0xFFFF00AA, str);
PlayerProps[playerid]--;
EarningsForPlayer[playerid] -= PropInfo[propid][PropEarning];
return 1;
}
//------------------------------------------------------------------------------
if(strcmp(cmd, \"/myhouse\", true) == 0 || strcmp(cmd, \"/myh\", true) == 0)
{
new str[128], ownerid;
#if ENABLE_LOGIN_SYSTEM == 1
if(Logged[playerid] == 0)
{
format(str, 128, \"Elöbb jelentkezbe: %s\", LOGIN_COMMAND);
SendClientMessage(playerid, 0xFF0000AA, str);
return 1;
}
#endif
if(PlayerProps[playerid] == 0)
{
SendClientMessage(playerid, 0xFF0000AA, \"Nincs házad!\");
return 1;
}
format(str, 128, \"|================ Van %d házad: =================|\", PlayerProps[playerid]);
SendClientMessage(playerid, 0x99FF66AA, str);
for(new propid; propid < PropertiesAmount; propid++)
{
if(PropInfo[propid][PropIsBought] == 1)
{
ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
if(ownerid == playerid)
{
format(str, 128, \"Neve: \\\"%s\\\" Értéke: %d$ Bevétel: %d$\", PropInfo[propid][PropName], PropInfo[propid][PropValue], PropInfo[propid][PropEarning]);
SendClientMessage(playerid, 0x99FF66AA, str);
}
}
}
SendClientMessage(playerid, 0x99FF66AA, \"|============================================|\");
return 1;
}
//------------------------------------------------------------------------------
#if ENABLE_LOGIN_SYSTEM == 1
if(strcmp(cmd, REGISTER_COMMAND, true) == 0)
{
new str[128];
if(Logged[playerid] == 1) return SendClientMessage(playerid, 0xFF0000AA, \"Te már bevagy jelentkezve!\");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
format(str, 128, \"%s <jelszó>\", REGISTER_COMMAND);
SendClientMessage(playerid, 0xAFAFAFAA, str);
return 1;
}
// if(strlen(tmp) < 5) return SendClientMessage(playerid, 0xFF9966AA, \"Password too short! At least 5 characters.\");
// if(strlen(tmp) > 20) return SendClientMessage(playerid, 0xFF9966AA, \"Password too long! Max 20 characters.\");
new pName[MAX_PLAYER_NAME], pass;
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
pass = dini_Int(\"PropertySystem/PlayerAccounts.txt\", pName);
if(pass == 0)
{
dini_IntSet(\"PropertySystem/PlayerAccounts.txt\", pName, encodepass(tmp));
Logged[playerid] = 1;
format(str, 128, \"Regisztráltál!. Mikor ujra jösz: \\\"%s %s\\\"\", LOGIN_COMMAND, tmp);
SendClientMessage(playerid, 0x99FF66AA, str);
}
else
{
format(str, 128, \"Ez a név már regisztrált!\");
SendClientMessage(playerid, 0xFF9966AA, str);
}
return 1;
}
//------------------------------------------------------------------------------
if(strcmp(cmd, LOGIN_COMMAND, true) == 0)
{
new str[128];
if(Logged[playerid] == 1) return SendClientMessage(playerid, 0xFF0000AA, \"Te már bevagy jelentkezve!\");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
format(str, 128, \"%s <jelszó>\", LOGIN_COMMAND);
SendClientMessage(playerid, 0xAFAFAFAA, str);
return 1;
}
new pName[MAX_PLAYER_NAME], pass;
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
pass = dini_Int(\"PropertySystem/PlayerAccounts.txt\", pName);
if(pass == 0)
{
format(str, 128, \"Te még nem regisztráltál! Regisztrálj: %s\", REGISTER_COMMAND);
SendClientMessage(playerid, 0xFF0000AA, str);
}
else
{
if(pass == encodepass(tmp))
{
Logged[playerid] = 1;
SendClientMessage(playerid, 0x99FF66AA, \"Bejelentkeztél! Tudsz házat venni és eladni!\");
}
else
{
SendClientMessage(playerid, 0xFF0000AA, \"Hibás jelszó!\");
}
}
#if ENABLE_LOGIN_SYSTEM == 1
if(PlayerProps[playerid] > 0)
{
format(str, 128, \"Van %d házad. /myh ezzel a parancsal megnézheted.\", PlayerProps[playerid]);
SendClientMessage(playerid, 0x99FF66AA, str);
}
#endif
return 1;
}
#endif
//------------------------------------------------------------------------------
if(strcmp(cmd, \"/sellallproperties\", true)==0)
{
// if(IsPlayerAdmin(playerid))
// {
for(new propid; propid<PropertiesAmount; propid++)
{
format(PropInfo[propid][PropOwner], MAX_PLAYER_NAME, \"Nobody\");
PropInfo[propid][PropIsBought] = 0;
PropInfo[propid][PropUnbuyableTime] = 0;
}
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
PlayerProps = 0;
}
}
new str[128], pName[24];
GetPlayerName(playerid, pName, 24);
format(str, 128, \"Az admin: %s eldata az összes házat!\", pName);
SendClientMessageToAll(0xFFCC66AA, str);
// }
return 1;
}
return 0;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
public OnPlayerPickUpPickup(playerid, pickupid)
{
new propid = -1;
for(new id; id<MAX_PROPERTIES; id++)
{
if(PropInfo[id][PickupNr] == pickupid)
{
propid = id;
break;
}
}
if(propid != -1)
{
new str[128];
format(str, 128, \"~g~\\\"%s\\\"~n~~r~\'Ara: ~y~%d$~n~~r~Kereset: ~y~%d$~n~~r~Tulajdonos: ~y~%s ~n~~w~(~y~nobody~w~ = senki)\", PropInfo[propid][PropName], PropInfo[propid][PropValue], PropInfo[propid][PropEarning], PropInfo[propid][PropOwner]);
GameTextForPlayer(playerid, str, 6000, 3);
}
return 1;
}
stock LoadProperties()
{
if(fexist(\"PropertySystem/PropertyInfo.txt\"))
{
CountProperties();
new Argument[9][70];
new entry[256], BoughtProps;
new File: propfile = fopen(\"PropertySystem/PropertyInfo.txt\", io_read);
if (propfile)
{
for(new id; id<PropertiesAmount; id++)
{
fread(propfile, entry);
split(entry, Argument, \',\');
format(PropInfo[id][PropName], 64, \"%s\", Argument[0]);
PropInfo[id][PropX] = floatstr(Argument[1]);
PropInfo[id][PropY] = floatstr(Argument[2]);
PropInfo[id][PropZ] = floatstr(Argument[3]);
PropInfo[id][PropValue] = strval(Argument[4]);
PropInfo[id][PropEarning] = strval(Argument[5]);
format(PropInfo[id][PropOwner], MAX_PLAYER_NAME, \"%s\", Argument[6]);
PropInfo[id][PropIsBought] = strval(Argument[7]);
PropInfo[id][PropUnbuyableTime] = strval(Argument[8]);
PropInfo[id][PickupNr] = CreatePickup(1273, 1, PropInfo[id][PropX], PropInfo[id][PropY], PropInfo[id][PropZ]);
if(PropInfo[id][PropIsBought] == 1)
{
BoughtProps++;
}
}
fclose(propfile);
// printf(\"===================================\");
// printf(\"|| Created %d Properties ||\", PropertiesAmount);
// printf(\"||%d of the properties are bought||\", BoughtProps);
// printf(\"===================================\");
}
}
}
stock SaveProperties()
{
new entry[256];
new File: propfile = fopen(\"PropertySystem/PropertyInfo.txt\", io_write);
for(new id; id<PropertiesAmount; id++)
{
format(entry, 128, \"%s,%.2f,%.2f,%.2f,%d,%d,%s,%d,%d \\r\\n\",PropInfo[id][PropName], PropInfo[id][PropX], PropInfo[id][PropY], PropInfo[id][PropZ], PropInfo[id][PropValue], PropInfo[id][PropEarning], PropInfo[id][PropOwner], PropInfo[id][PropIsBought], PropInfo[id][PropUnbuyableTime]);
fwrite(propfile, entry);
}
// printf(\"Saved %d Properties!\", PropertiesAmount);
fclose(propfile);
}
forward split(const strsrc[], strdest[][], delimiter);
public split(const strsrc[], strdest[][], delimiter)
{
new i, li;
new aNum;
new len;
while(i <= strlen(strsrc)){
if(strsrc==delimiter || i==strlen(strsrc)){
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}
stock CountProperties()
{
new entry[256];
new File: propfile = fopen(\"PropertySystem/PropertyInfo.txt\", io_read);
while(fread(propfile, entry, 256))
{
PropertiesAmount++;
}
fclose(propfile);
}
forward IsPlayerNearProperty(playerid);
public IsPlayerNearProperty(playerid)
{
new Float:Distance;
for(new prop; prop<PropertiesAmount; prop++)
{
Distance = GetDistanceToProperty(playerid, prop);
if(Distance < 1.0)
{
return prop;
}
}
return -1;
}
forward Float:GetDistanceToProperty(playerid, Property);
public Float:GetDistanceToProperty(playerid, Property)
{
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
GetPlayerPos(playerid,x1,y1,z1);
x2 = PropInfo[Property][PropX];
y2 = PropInfo[Property][PropY];
z2 = PropInfo[Property][PropZ];
return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}
stock GetPlayerID(const Name[])
{
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
new pName[MAX_PLAYER_NAME];
GetPlayerName(i, pName, sizeof(pName));
if(strcmp(Name, pName, true)==0)
{
return i;
}
}
}
return -1;
}
stock SendClientMessageToAllEx(exeption, color, const message[])
{
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(i != exeption)
{
SendClientMessage(i, color, message);
}
}
}
}
forward UpdateUnbuyableTime();
public UpdateUnbuyableTime()
{
for(new propid; propid<PropertiesAmount; propid++)
{
if(PropInfo[propid][PropIsBought] == 1)
{
if(PropInfo[propid][PropUnbuyableTime] > 0)
{
PropInfo[propid][PropUnbuyableTime]--;
}
}
}
}
stock encodepass(buf[]) {
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}
forward MapIconStreamer();
public MapIconStreamer()
{
for(new i; i<MP; i++)
{
if(IsPlayerConnected(i))
{
new Float:SmallestDistance = 99999.9;
new CP, Float:OldDistance;
for(new propid; propid<PropertiesAmount; propid++)
{
OldDistance = GetDistanceToProperty(i, propid);
if(OldDistance < SmallestDistance)
{
SmallestDistance = OldDistance;
CP = propid;
}
}
RemovePlayerMapIcon(i, 31);
if(PropInfo[CP][PropIsBought] == 1)
{
SetPlayerMapIcon(i, 31, PropInfo[CP][PropX], PropInfo[CP][PropY], PropInfo[CP][PropZ], 32, 0);
}
else
{
SetPlayerMapIcon(i, 31, PropInfo[CP][PropX], PropInfo[CP][PropY], PropInfo[CP][PropZ], 31, 0);
}
}
}
}
forward PropertyPayout();
public PropertyPayout()
{
new str[64];
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerProps > 0)
{
GivePlayerMoney(i, EarningsForPlayer);
format(str, 64, \"Házaid bevétele: %d$\", EarningsForPlayer);
SendClientMessage(i, 0x99FF66AA, str);
}
}
}
}