Cześć, plugin pobrałem z bułgarskiej strony, jeszcze go na polskiej scenie nie widziałem w akcji. Oryginalny link do tematu https://forums.allie...ad.php?t=295362. Problem polega na 3 errorach, i nie wynikają one na pewno z mojej wersji kompilatora.
W tych linijkach pokazuje błąd
case 'C', 'c': g_eSettings[ADVANTAGE_TEAM] = CS_TEAM_CT case 'T', 't': g_eSettings[ADVANTAGE_TEAM] = CS_TEAM_T default: g_eSettings[ADVANTAGE_TEAM] = CS_TEAM_UNASSIGNED }
Z czego sam wywnioskowałem problem raczej będzie z enum, poniżej cały kod. Nie jestem w stanie sam to naprawić więc prosiłbym o wstawienie działającego kodu.
#include <amxmodx>
#include <amxmisc>
#include <cromchat>
#include <cstrike>
#define PLUGIN_VERSION "1.0"
enum
{
SECTION_NONE = 0,
SECTION_SETTINGS,
SECTION_ADVANTAGES
}
enum _:Settings
{
CsTeams:ADVANTAGE_TEAM,
ADVANTAGE_FLAGS[32],
bool:ADVANTAGE_USE_FLAGS,
MAX_MONEY,
bool:PLAYER_MESSAGE
}
new g_eSettings[Settings]
new Array:g_aLoses,
Array:g_aMoney,
bool:g_bRoundEnd,
g_iLoses[CsTeams:3],
g_iAdvantages
public plugin_init()
{
register_plugin("Team Advantage", PLUGIN_VERSION, "OciXCrom")
register_cvar("CRXTeamAdvantage", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
register_dictionary("TeamAdvantage.txt")
register_logevent("OnFirstRound", 2, "0=World triggered", "1&Restart_Round_")
register_logevent("OnFirstRound", 2, "0=World triggered", "1=Game_Commencing")
register_logevent("OnRoundStart", 2, "0=World triggered", "1=Round_Start")
register_event("SendAudio", "OnTeamWin", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin")
g_aLoses = ArrayCreate(5)
g_aMoney = ArrayCreate(8)
ReadFile()
}
public plugin_end()
{
ArrayDestroy(g_aLoses)
ArrayDestroy(g_aMoney)
}
public OnFirstRound()
{
g_iLoses[CS_TEAM_CT] = 0
g_iLoses[CS_TEAM_T] = 0
}
public OnRoundStart()
g_bRoundEnd = false
public OnTeamWin()
{
if(g_bRoundEnd)
return
g_bRoundEnd = true
new szTeam[9]
read_data(2, szTeam, charsmax(szTeam))
new CsTeams:iWinTeam = szTeam[7] == 'c' ? CS_TEAM_CT : CS_TEAM_T,
CsTeams:iLoseTeam = iWinTeam == CS_TEAM_CT ? CS_TEAM_T : CS_TEAM_CT
g_iLoses[iLoseTeam]++
g_iLoses[iWinTeam] = 0
if(g_eSettings[ADVANTAGE_TEAM] != CS_TEAM_UNASSIGNED && g_eSettings[ADVANTAGE_TEAM] != iLoseTeam)
return
new iMoney
for(new i; i < g_iAdvantages; i++)
{
if(g_iLoses[iLoseTeam] == ArrayGetCell(g_aLoses, i))
{
iMoney = ArrayGetCell(g_aMoney, i)
break
}
}
if(!iMoney)
return
new iPlayers[32], iPnum
get_players(iPlayers, iPnum, "e", iLoseTeam == CS_TEAM_CT ? "CT" : "TERRORIST")
if(g_eSettings[ADVANTAGE_USE_FLAGS])
CC_SendMessage(0, "%L", LANG_PLAYER, "ADVANTAGE_GET_FLAGS", g_eSettings[ADVANTAGE_FLAGS], LANG_PLAYER, iLoseTeam == CS_TEAM_CT ? "ADVANTAGE_TEAM_CT" : "ADVANTAGE_TEAM_T", iMoney, g_iLoses[iLoseTeam])
else
CC_SendMessage(0, "%L", LANG_PLAYER, "ADVANTAGE_GET_NORMAL", LANG_PLAYER, iLoseTeam == CS_TEAM_CT ? "ADVANTAGE_TEAM_CT" : "ADVANTAGE_TEAM_T", iMoney, g_iLoses[iLoseTeam])
for(new iPlayer, i; i < iPnum; i++)
{
iPlayer = iPlayers[i]
if(g_eSettings[ADVANTAGE_USE_FLAGS] && !has_all_flags(iPlayer, g_eSettings[ADVANTAGE_FLAGS]))
continue
cs_set_user_money(iPlayers[i], clamp(cs_get_user_money(iPlayer) + iMoney, .max = g_eSettings[MAX_MONEY]))
if(g_eSettings[PLAYER_MESSAGE])
CC_SendMessage(iPlayer, "%L", iPlayer, "ADVANTAGE_GET_PLAYER", iMoney, g_iLoses[iLoseTeam])
}
}
ReadFile()
{
new szConfigsName[256], szFilename[256]
get_configsdir(szConfigsName, charsmax(szConfigsName))
formatex(szFilename, charsmax(szFilename), "%s/TeamAdvantage.ini", szConfigsName)
new iFilePointer = fopen(szFilename, "rt")
if(iFilePointer)
{
new szData[64], szKey[32], szValue[32], iNum, iSection = SECTION_NONE
while(!feof(iFilePointer))
{
fgets(iFilePointer, szData, charsmax(szData))
trim(szData)
switch(szData[0])
{
case EOS, ';': continue
case '[':
{
iNum = strlen(szData)
if(szData[iNum - 1] == ']')
{
switch(szData[1])
{
case 'S', 's': iSection = SECTION_SETTINGS
case 'A', 'a': iSection = SECTION_ADVANTAGES
}
}
else continue
}
default:
{
strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
trim(szKey); trim(szValue)
if(!szValue[0])
continue
switch(iSection)
{
case SECTION_SETTINGS:
{
if(equal(szKey, "ADVANTAGE_TEAM"))
{
switch(szValue[0])
{
case 'C', 'c': g_eSettings[ADVANTAGE_TEAM] = CS_TEAM_CT
case 'T', 't': g_eSettings[ADVANTAGE_TEAM] = CS_TEAM_T
default: g_eSettings[ADVANTAGE_TEAM] = CS_TEAM_UNASSIGNED
}
}
else if(equal(szKey, "ADVANTAGE_FLAGS"))
{
if(szValue[0] != '!')
{
g_eSettings[ADVANTAGE_USE_FLAGS] = true
copy(g_eSettings[ADVANTAGE_FLAGS], charsmax(g_eSettings[ADVANTAGE_FLAGS]), szValue)
}
}
else if(equal(szKey, "MAX_MONEY"))
g_eSettings[MAX_MONEY] = str_to_num(szValue)
else if(equal(szKey, "CHAT_PREFIX"))
CC_SetPrefix(szValue)
else if(equal(szKey, "PLAYER_MESSAGE"))
g_eSettings[PLAYER_MESSAGE] = _:clamp(str_to_num(szValue), false, true)
}
case SECTION_ADVANTAGES:
{
iNum = str_to_num(szKey)
ArrayPushCell(g_aLoses, iNum)
iNum = str_to_num(szValue)
ArrayPushCell(g_aMoney, iNum)
g_iAdvantages++
}
}
}
}
}
fclose(iFilePointer)
}
}


Dodatki SourceMod













