[Consulta] [Android] Programando YUGIOH

Iniciado por s00rk, Junio 19, 2012, 10:24:31 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Junio 19, 2012, 10:24:31 PM Ultima modificación: Abril 18, 2013, 01:01:30 PM por Expermicid
Bueno pues hago este tema ya que estoy estancado en una parte en el codigo que es en los efectos de monstruos y cartas(Esto claro lo entenderan ls que sabn del juego hehe), puesto que lo que hago es obtener los datos de todas las cartas desde No tienes permitido ver los links. Registrarse o Entrar a mi cuenta en donde no tengo ningun problema haciendo simples parse y obtienendos los datos tales como nombre del deck, nombre de la carta, tipo, atributo y demas, el problema viene cuando son cartas de efecto, puesto que por ahora no se me ocurre nada para poderlo hacer automatizado (no quiero andar programandole cada efecto a cada carta -.-, o eso es lo que trato de lograr) y ahi puedo leer el efecto pero imposible poder desde el texto de la carta saber lo que hara hehe, por eso vengo a preguntar o ver si alguno de ustedes tiene alguna idea sobre que seria lo mas factible para hacerlo.

Tambien me he puesto a leer un poco sobre YUGIOH Phoenix, que es un programa para PC para jugar YUGIOH en linea el cual todos los efectos y demas de los monstruos estan contenidos en archivos LUA, el cual si lo conosco mas nunca lo he manejado, ademas de que no entiendo como el programa en sí, los lee o como los maneja, o si alguno conoce ya mejor como hacerlo seria de gran ayuda hehehe, ya que lo que deseo es hacer este juego para Android y que sea Online(Esto es lo de menos, para esto ya tengo la idea de como lo hare, e hice pequeñas pruebas sobre Ataque y demas hehe)

Aqui uno de ellos, bueno esto lo dejo por si puede servir d algo nose:
Código: java
--リミット·リバース
function c27551.initial_effect(c)
    --Activate
    local e1=Effect.CreateEffect(c)
    e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
    e1:SetType(EFFECT_TYPE_ACTIVATE)
    e1:SetCode(EVENT_FREE_CHAIN)
    e1:SetHintTiming(0,TIMING_END_PHASE+TIMING_ATTACK)
    e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
    e1:SetTarget(c27551.target)
    e1:SetOperation(c27551.operation)
    c:RegisterEffect(e1)
    --Destroy
    local e2=Effect.CreateEffect(c)
    e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE)
    e2:SetCode(EVENT_LEAVE_FIELD)
    e2:SetOperation(c27551.desop)
    c:RegisterEffect(e2)
    --Destroy2
    local e3=Effect.CreateEffect(c)
    e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
    e3:SetRange(LOCATION_SZONE)
    e3:SetCode(EVENT_LEAVE_FIELD)
    e3:SetCondition(c27551.descon2)
    e3:SetOperation(c27551.desop2)
    c:RegisterEffect(e3)
    --Destroy3
    local e4=Effect.CreateEffect(c)
    e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
    e4:SetRange(LOCATION_SZONE)
    e4:SetCode(EVENT_CHANGE_POS)
    e4:SetCondition(c27551.descon3)
    e4:SetOperation(c27551.desop3)
    c:RegisterEffect(e4)
end
function c27551.filter(c,e,tp)
    return c:IsAttackBelow(1000) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c27551.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
    if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c27551.filter(chkc,e,tp) end
    if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
        and Duel.IsExistingTarget(c27551.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
    Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
    local g=Duel.SelectTarget(tp,c27551.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp)
    Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0)
end
function c27551.operation(e,tp,eg,ep,ev,re,r,rp)
    local c=e:GetHandler()
    local tc=Duel.GetFirstTarget()
    if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then
        if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK)==0 then return end
        c:SetCardTarget(tc)
    end
end
function c27551.desop(e,tp,eg,ep,ev,re,r,rp)
    local tc=e:GetHandler():GetFirstCardTarget()
    if tc and tc:IsLocation(LOCATION_MZONE) then
        Duel.Destroy(tc,REASON_EFFECT)
    end
end
function c27551.descon2(e,tp,eg,ep,ev,re,r,rp)
    local tc=e:GetHandler():GetFirstCardTarget()
    return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY)
end
function c27551.desop2(e,tp,eg,ep,ev,re,r,rp)
    Duel.Destroy(e:GetHandler(),REASON_EFFECT)
end
function c27551.descon3(e,tp,eg,ep,ev,re,r,rp)
    local tc=e:GetHandler():GetFirstCardTarget()
    return tc and eg:IsContains(tc) and tc:IsDefencePos()
end
function c27551.desop3(e,tp,eg,ep,ev,re,r,rp)
    local c=e:GetHandler()
    local tc=c:GetFirstCardTarget()
    local g=Group.FromCards(tc,c)
    Duel.Destroy(g,REASON_EFFECT)
end


Bueno cualquier sugerencia o duda u opinion pues es bien recibida hehe.

Ami una ves me invitarion a jugar YugiOH en linea pero no savia jugarlo D:
bueno yo te recomiendo que en lugar de crear una Aplicacion para android lo agas directamente en una web, si sigues los estandares es probable que no solo corra bien en android sino tambien en tableds <-- o como se escriba XD, o cualquier otra PC

pero sin usar flash ewe

PD: si no saves nada de programacion web pues mejor siguelo asiendo como puedas XD