xwerswoodx - 15-02-2017 20:49 GMT -
StrToken fonksiyonunu eklemeye yarar.
Kullanımı:
çıktı: c
çıktı: 5
çıktı: null
Aralık belirlemek:
çıktı: b.c.d.e
çıktı: b.c.d
Kurulum;
Not: Düzenlemeye başlamadan önce dosyalarınızı yedekleyiniz.
Aç: src/common/CScriptObj.cpp
bul:
üzerine ekle:
Aç: src/tables/CScriptObj_functions.tbl
bul:
altına ekle:
Dipnot: Bu kodun benim ilk c++ kodum olduğunu ve diğer kodlardan örnek alarak kodladığımı belirtmek isterim, gereksiz eleştiriler yerine hata gören varsa belirtirse ona göre kendimizi düzeltiriz. Bunu paylaşma amacım bir nevi artık script yerine sphere kaynak üzerinden ilerlemek istemem.
Son güncelleme: xwerswoodx tarafından 31-05-2017 22:38 GMT, 918 Gün önce düzenlendi.
StrToken fonksiyonunu eklemeye yarar.
Kullanımı:
Aralık belirlemek:
Kurulum;
Not: Düzenlemeye başlamadan önce dosyalarınızı yedekleyiniz.
Aç: src/common/CScriptObj.cpp
bul:
Kod:
case SSC_EXPLODE:
üzerine ekle:
Kod:
case SSC_StrToken:
{
TCHAR * ppArgs[3];
size_t iQty = Str_ParseCmds(const_cast<TCHAR *>(pszKey), ppArgs, COUNTOF(ppArgs), ",");
if ( iQty < 3 )
return false;
if ( *ppArgs[2] == '"' )
ppArgs[2]++;
for (TCHAR * pEnd = ppArgs[2] + strlen(ppArgs[2]) - 1; pEnd >= ppArgs[2]; pEnd--)
{
if ( *pEnd == '"' )
{
*pEnd = '\0';
break;
}
}
TCHAR * iSep = ppArgs[2];
for (TCHAR *iSeperator = ppArgs[2] + strlen(ppArgs[2]) - 1; iSeperator > ppArgs[2]; iSeperator--)
*iSeperator = '\0';
if ( *ppArgs[0] == '"' )
ppArgs[0]++;
for (TCHAR * pEnd = ppArgs[0] + strlen(ppArgs[0]) - 1; pEnd >= ppArgs[0]; pEnd--)
{
if ( *pEnd == '"' )
{
*pEnd = '\0';
break;
}
}
sVal = "";
TCHAR *ppCmd[255];
size_t count = Str_ParseCmds(ppArgs[0], ppCmd, COUNTOF(ppCmd), iSep);
TCHAR * ppArrays[2];
size_t iArrays = Str_ParseCmds(ppArgs[1], ppArrays, COUNTOF(ppArrays), "-");
INT64 iValue = Exp_GetVal(ppArgs[1]);
INT64 iValueEnd = iValue;
if (iArrays > 1)
{
iValue = Exp_GetVal(ppArrays[0]);
iValueEnd = Exp_GetVal(ppArrays[1]);
if (iValueEnd <= 0 || iValueEnd > count)
iValueEnd = count;
}
if (iValue < 0)
return false;
else if (iValue > 0)
{
if (iValue > count)
return false;
else if (iValue == iValueEnd)
sVal = ppCmd[iValue - 1];
else
{
sVal.Add(ppCmd[iValue - 1]);
INT64 i = iValue + 1;
for ( ; i <= iValueEnd; i++)
{
sVal.Add(iSep);
sVal.Add(ppCmd[i - 1]);
}
}
}
else
sVal.FormatVal(static_cast<long>(count));
}
return true;
{
TCHAR * ppArgs[3];
size_t iQty = Str_ParseCmds(const_cast<TCHAR *>(pszKey), ppArgs, COUNTOF(ppArgs), ",");
if ( iQty < 3 )
return false;
if ( *ppArgs[2] == '"' )
ppArgs[2]++;
for (TCHAR * pEnd = ppArgs[2] + strlen(ppArgs[2]) - 1; pEnd >= ppArgs[2]; pEnd--)
{
if ( *pEnd == '"' )
{
*pEnd = '\0';
break;
}
}
TCHAR * iSep = ppArgs[2];
for (TCHAR *iSeperator = ppArgs[2] + strlen(ppArgs[2]) - 1; iSeperator > ppArgs[2]; iSeperator--)
*iSeperator = '\0';
if ( *ppArgs[0] == '"' )
ppArgs[0]++;
for (TCHAR * pEnd = ppArgs[0] + strlen(ppArgs[0]) - 1; pEnd >= ppArgs[0]; pEnd--)
{
if ( *pEnd == '"' )
{
*pEnd = '\0';
break;
}
}
sVal = "";
TCHAR *ppCmd[255];
size_t count = Str_ParseCmds(ppArgs[0], ppCmd, COUNTOF(ppCmd), iSep);
TCHAR * ppArrays[2];
size_t iArrays = Str_ParseCmds(ppArgs[1], ppArrays, COUNTOF(ppArrays), "-");
INT64 iValue = Exp_GetVal(ppArgs[1]);
INT64 iValueEnd = iValue;
if (iArrays > 1)
{
iValue = Exp_GetVal(ppArrays[0]);
iValueEnd = Exp_GetVal(ppArrays[1]);
if (iValueEnd <= 0 || iValueEnd > count)
iValueEnd = count;
}
if (iValue < 0)
return false;
else if (iValue > 0)
{
if (iValue > count)
return false;
else if (iValue == iValueEnd)
sVal = ppCmd[iValue - 1];
else
{
sVal.Add(ppCmd[iValue - 1]);
INT64 i = iValue + 1;
for ( ; i <= iValueEnd; i++)
{
sVal.Add(iSep);
sVal.Add(ppCmd[i - 1]);
}
}
}
else
sVal.FormatVal(static_cast<long>(count));
}
return true;
Aç: src/tables/CScriptObj_functions.tbl
bul:
Kod:
ADD(StrSub, "StrSub")
altına ekle:
Kod:
ADD(StrToken, "StrToken")
Dipnot: Bu kodun benim ilk c++ kodum olduğunu ve diğer kodlardan örnek alarak kodladığımı belirtmek isterim, gereksiz eleştiriler yerine hata gören varsa belirtirse ona göre kendimizi düzeltiriz. Bunu paylaşma amacım bir nevi artık script yerine sphere kaynak üzerinden ilerlemek istemem.
Son güncelleme: xwerswoodx tarafından 31-05-2017 22:38 GMT, 918 Gün önce düzenlendi.